学习JAVA之接口、多态

第一章 接口

 

1.1接口的定义以及实现

接口的内部主要就是封装了方法。包含了抽象方法,默认方法,静态方法,私有方法。

 

1. 成员变量其实是常量,格式:
[public] [static] [final] 数据类型 常量名称 = 数据值;
注意:
常量必须进行赋值,而且一旦赋值不能改变。
常量名称完全大写,用下划线进行分隔。

2. 接口中最重要的就是抽象方法,格式:
[public] [abstract] 返回值类型 方法名称(参数列表);
注意:实现类必须覆盖重写接口所有的抽象方法,除非实现类是抽象类。 

3. 从Java 8开始,接口里允许定义默认方法,格式:
[public] default 返回值类型 方法名称(参数列表) { 方法体 }
注意:默认方法也可以被覆盖重写

4. 从Java 8开始,接口里允许定义静态方法,格式:
[public] static 返回值类型 方法名称(参数列表) { 方法体 }
注意:应该通过接口名称进行调用,不能通过实现类对象调用接口静态方法,没有静态抽象方法。

5. 从Java 9开始,接口里允许定义私有方法,格式:
普通私有方法:private 返回值类型 方法名称(参数列表) { 方法体 }
静态私有方法:private static 返回值类型 方法名称(参数列表) { 方法体 }
注意:private的方法只有接口自己才能调用,不能被实现类或别人使用。

1.2 接口的多实现

一、针对实现类实现多个接口的情况:

1.1 抽象方法:

接口中有多个抽象方法时,实现类必须重写所有抽象方法。如果抽象方法有重名的,只需要重写一次。

 

 

 

 

 

 

 1.2 默认方法

接口中,有多个默认方法时,实现类都可以继承使用,如果默认方法有重名的话,必须重写一次

 

 

 

 1.3 静态方法

接口中,存在同名的静态方法并不会冲突,原因是只能通过各自接口名访问静态方法。

 

二、针对实现类有继承父类,又实现多接口

当一个类,既继承一个父类,又实现若干个接口时,父类中的成员方法与接口中的默认方法重名,子类就近选择执行父类的成员方法。

 

 

三、针对接口继承多个接口的

如果多个父接口的默认方法有重名,那么子接口需要重写一次。

 

1.3 其他成员的特点

接口中,无法定义成员变量,但是可以定义常量,其值不可以改变,默认使用public static final修饰。

接口中没有构造方法,不能创建对象。

接口中没有静态代码块。

 


 

第二章 多态

 

2.1 关于多态

子类有多种形态,可以是父类的形态,也可以是子类的形态

前提是:1、有继承或者实现的关系(二选一即可)。2、方法的重写,不重写就没有意义 。3、父类引用指向子类对象(格式的体现)

对于变量

编译看左边,运行还是看左边

对于方法

编译看左边,运行看右边

 

2.2多态的好处

实际开发过程中,父类类型作为方法形式传参,传递子类对象给方法,进行方法调用,更能体现出多态的扩展性与便利

 

2.3 向下转型注意事项(目的是为了调用子类特有的方法或者变量)

要先验证对象是属于哪个子类,用到instanceof关键字,不然就可能会爆出ClassCastException的转换错误

 格式: 变量名 instanceof 数据类型

 

posted on 2020-04-07 17:07  o0孤岛  阅读(142)  评论(0)    收藏  举报