学习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 数据类型
浙公网安备 33010602011771号