一.转型---类型转换
多态调用对子类新增内容不可见
向上转型:多态 自主类型提升
向下转型(强制转换):父类引用 转为对应的子类类型
引用instanceof 类型
避免出现向下类型转换错误,出现进行强转。在强转类型前进行判断
抽象类:abstract抽象的
被abstract修饰的类是抽象类
被abstract修饰的方法是抽象方法
抽象方法没有方法体 抽象方法必须定义与抽象类汇总
注意:
1.抽象类不能实例化
2.抽象类可以定义抽象方法,可以定义非抽象方法,属性,构造器...
3.抽象方法必须定义与抽象类中
4.抽象类的使用:通过具体子类对象调用
具体子类:重写所有的抽象方法+按需新增
抽象子类:按需重写抽量方法+按需新增
5.一个抽象方法一旦被重写,后续的子类中可以不再被重写,可以按需重写
6.抽象方法必须要被重写,没有重写,没有方法体,不能调用
7.abstract不能与static,private,final与native一起使用
接口:
特殊的抽象类
接口是一个引用数据类型
接口为抽象功能的集合
类单继承机制,接口是多实现机制
接口定义开发规范
解耦,降低耦合度
定义:
interface 定义接口
接口--》通过implements 实现接口
父类--》需要通过extends继承父类
继承与实现的区别:
子类继承父类,就可以直接有权使用父类的成员(侧重点:直接拿过来用)
实现类实现接口,实现类就有了接口定义的功能,但是功能都是抽象的,没有方法体的,需要实现类自己去实现的
使用:
1.接口不能实例化
2.需要通过实现类实现接口使用
具体的实现类:重写所有的抽象方法+按需新增
抽象的实现类:按需重写抽象方法+按需新增
3.类只能被类继承,接口只能被类实现
4.类只能单继承父类,但是可以实现多个接口
5.先继承父类后实现接口
6.一个接口可以继承多个接口,接口可以多继承接口
7.避免实现的接口中存在相同的方法
8.接口存在多态
jdk1.7及之前
1.公共的静态的常量 public static final---》任意省略
2.公共的抽象的方法 public abstract----》任意省略
jdk8.对接口新增
1.静态方法 : 只能通过接口名调用,不能通过实现类对象调用
2.默认方法 : 被default修饰的方法,只能通过类实现调用
注意:父类与接口不能完全互相代替,推荐使用接口;
将能力(例子:吸烟,喝酒)定义为接口
张三会吸烟,实现该接口