多态
1.含义
一种事物的多种形态|多种表现形式。
2.前提
1)类的继承
2)接口的实现
3.表现形式
类的引用指向子类对象
4.使用
父类的引用在调用方法,调用子类中重写的方法
5.注意
1)父类引用对子类新增功能不可见
2)如果子类中没有重写方法,多态没有意义
转型
基本数据类型: 自动向上提升 强制类型转换
引用数据类型: 向上转型(自动)小转大 向下转型(强制)大转小
小范围类型–>子类
大范围类型–>父类
向下转型:当需要调用子类独有的功能,需要向下转型
引用 instanceof 类型
判断前面的引用是否为后面类型的对象|子类的对象
如果是,返回true,如果不是,返回false
编译只检查引用的类型与后面的类型是否在一条继承链上,如果是就语法没有错误
抽象类
抽象类:被abstract修饰的类
抽象方法 : 被abstract修饰的方法
1)没有方法体
2)必须存在抽象类中
注意:
1.抽象类不能实例化
2.抽象方法必须存在于抽象类中
3.抽象类中可以存在抽象方法,可以存在具体方法(有方法体的方法)
4.通过子类使用抽象类:
具体子类:重写抽象父类中的所有抽象方法+按需新增
抽象子类:按需重写抽象方法+按需新增
5.一个抽象方法如果已经被冲写过,就可以不需要再次重写
6.抽象方法必须被重写
7.abstract不能和static, final,private,native一起使用
接口
interface定义、特殊的抽象类
能用接口就用接口
在1.7及之前:
静态的公共的常量+公共的抽象的方法
属性:
public static final默认修饰符,可以选择性的省略
功能:
public abstract 默认修饰符,可以选择性的省略
1.8及之后版本:
1.静态方法:接口名字. 使用
2.默认方法:实现类的对象使用
注意:
1.类的继承,接口需要实现
2.抽象方法必须被重写
3.使用接口中的内容:接口需要实现implements,类要使用extends继承
具体的实现类: 重写接口中的所有抽象方法+按需新增
抽象的实现类: 按需重写抽象方法+按需新增
4.单继承,一个类只能继承一个类,接口可以多实现,实现了接口,就拥有了接口中定义的功能
5.一个类及继承父类又实现接口,先继承后实现
6.避免实现的多个接口中定义了相同的功能
7.接口可以多继承其他接口,不能是实现接口的(实现:对抽象方法方法体的实现)
8.接口不能实例化
优点:
避免单继承的局限性 (推荐使用接口)
提高代码的复用性
解耦:高内聚低耦合
定义规范