Java详细讲解不同版本的接口语法和抽象类与接口的区别

作者:学废的小白! 时间:2022-09-30 01:46:38 

什么是接口?

说到接口,USB大家肯定不陌生~
接口是一种标准、规范.
注意:接口一旦制定好,使用者和实现者都必须遵循的标准.

Java详细讲解不同版本的接口语法和抽象类与接口的区别

接口的语法: (JDK7.0)

(1) 关键字:interface 
(2) 语法:  interface 接口名{} 
(3) 接口编译之后会生成对应的 .class文件 
(4) 接口不能创建对象,但是可以声明引用 接口名 引用名; 
(5) 接口中没有构造方法 
(6) 接口中所有的属性都是公开的静态常量
    (默认被:public static final) 
(7) 接口中所有的方法都是公开抽象方法
    (默认被:public abstract修饰) 
    注意:接口中的方法默认访问权限为public; 
         类中方法默认访问权限是 default

接口的实现类:

语法:

class 类名 implements 接口名{} 

注意:实现的关键字为 implements 
(1) 如果实现类不想成为抽象类,必须覆盖(实现)接口中所有的方法 
(2) 实现类中覆盖接口中的方法时,访问权限必须是public
使用:
(1) 接口类型的引用中,只能存储对应实现类的对象,体现多态的应用 
(2) 语法:

    接口名 引用名 = new 实现类类名(实参); 

    注意:一个接口可以定义多个实现类

接口的继承性:(很重要哦~)

接口与接口之间为多继承的关系

(1) 一个接口可以同时继承多个父接口 

(2) 语法: 

    interface 接口名 extends 父接口名1,父接口名2{}

类与接口之间为多实现的关系

(1) 一个类可以同时实现多个接口 

(2) 语法: 

    class 类名 implements 接口名1,接口名2{} 

(3) 一个类同时实现多个接口,不想成为抽象类,则需要实现所有接口中所有方法 
    (包括所实现接口的父接口中的方法)

一个类实现多个接口的同时还有可以继承一个类

(1) 如果一个类继承一个父类同时实现多个接口,必须先继承,再实现 

(2) 语法: 

    class 类名 extends 父类名 implements 父接口1,父接口2{} 

    注意:必须先 extends ,再 implements 

类与类之间存在:单继承------extends

类与接口之间存在:多实现------implements

接口与接口之间存在:多继承------extends

接口的影响:

1.由于接口之间为多继承的关系,同时类与接口之间是多实现的关系,所以让多态更加多元化和复杂
2.如果强制类型转换的双方只要有一方为接口类型,则编译一定通过,运行分以下两种情况:
  a.如果转换的引用中存储的实际对象类型是要转换类型的一种,运行通过 
  b.如果转换的引用中存储的实际对象类型不是要转换的一种,编译通过,但是运行报错,错误信息:
    Java.lang.ClassCastException(类型转换异常)

接口的语法: (JDK8.0)

(1) 默认方法: 

    a. public default 返回值类型 方法名(形参列表){ 
            // 方法的实现部分 
       } 

    b. 注意:接口中方法被 default修饰代表,此方法允许带有方法实现部分 
    c. 默认方法访问权限 为 public 
    d. 默认方法允许被覆盖,但是覆盖时访问修饰符为 public 

(2) 静态方法: 

    a. public static 返回值类型 方法名(形参列表){ 
            // 方法的实现部分 
       } 

    b. 接口中静态方法访问权限是public

接口的语法: (JDK9.0)—(私有方法)

(1) 接口中从9.0开始,方法可以被 private修饰 

(2) 语法: 

    private 返回值类型 方法名(形参列表){ 
        // 方法的实现 
    } 

(3) 私有方法供接口内部使用,通常将其他方法的共同逻辑部分提取,减少代码冗余

接口的分类

常量接口:

接口中只有属性、没有方法,应用很少

空接口:

通常称为标记接口,接口中没有任何属性和抽象;
例如:IO对象序列化时应用

函数式接口:

接口中有且只有一个抽象方法(静态和默认不关注),广泛应用在Lambda表达式中

抽象类和接口的区别? (要牢记哦~)

Java详细讲解不同版本的接口语法和抽象类与接口的区别

来源:https://blog.csdn.net/weixin_60768515/article/details/123719970

标签:Java,接口,抽象类
0
投稿

猜你喜欢

  • c# winform取消右上角关闭按钮的实现方法

    2023-05-05 18:56:28
  • 解决使用ProcessBuilder踩到的坑及注意事项

    2023-11-24 01:37:55
  • java实现分布式项目搭建的方法

    2022-10-13 10:42:36
  • android操作XML的几种方法总结

    2021-08-10 06:06:16
  • C#实现常见加密算法的示例代码

    2023-05-08 12:44:43
  • Java如何跳过https的ssl证书验证详解

    2023-08-24 11:34:56
  • C语言实现两个矩阵相乘

    2023-07-22 12:41:20
  • 浅谈Spring Boot 开发REST接口最佳实践

    2021-10-08 12:24:35
  • 使用chatgpt实现微信聊天小程序的代码示例

    2022-04-26 17:18:24
  • Android手机卫士之设置密码对话框

    2021-08-03 07:24:27
  • Spring boot集成redis lettuce代码实例

    2022-08-03 12:21:19
  • 使用开源项目JAVAE2 进行视频格式转换

    2023-11-08 07:18:24
  • Android使用Gradle依赖配置compile、implementation与api的区别介绍

    2023-09-27 18:11:40
  • C#利用VS中插件打包并发布winfrom程序

    2022-01-01 21:18:22
  • C#设计模式之Mediator中介者模式解决程序员的七夕缘分问题示例

    2021-10-05 16:28:14
  • Java创建线程池为什么一定要用ThreadPoolExecutor

    2023-04-22 06:03:31
  • 关于后端如何解决跨域的问题说明

    2023-09-19 00:59:10
  • Android 回调详解及简单实例

    2023-03-06 10:49:35
  • 基于FeignException$InternalServerError的解决方案

    2023-04-25 15:50:45
  • Android计时器控件Chronometer应用实例

    2023-03-01 09:46:59
  • asp之家 软件编程 m.aspxhome.com