抽象类
(一)
1.抽象方法
抽象类可以有构造方法,其作用是为了让子类在构造子类对象的时候
先去调用父类中的构造方法对继承自父类中的属性进行一个妥善的初始化操作
在一个类中,如果不知道方法体要怎么写,那么此时可以将其声明为抽象方法,抽象方法使用abstract关键词进行修饰
接口:
在接口的实现类中,可以选择实现接口中的所有方法
或者让这个实现类继续称为抽象类
一个实现类可以实现多个接口,而一个类只能继承一个类
接口中对于属性而言,只能定义常量,属性默认以public static final 进行修饰
接口对于属性而言,只能定义常量属性
* 可以使用public或默认
* 接口不能有构造方法
* 接口的方法默认为公有的抽象方法
* 在JDK1.8以上支持带方法体的default方法
*
* 注意:
* 接口中不能添加除public static final 以外的属性
* 接口中的方法必须为抽象方法
* 接口不能被实例化(但是接口可以作为一种数据类型来使用)
*
* 接口的实现
* 要通过接口的实现来实现接口,并重写其中的方法
* class 类型 implements 接口名{}
*
接口中的向下造型
从接口类型向实现类类型进行转换
语法:
实现类类型 引用变量= (实现类类型)接口类型
Object类型是所有类型的顶级父类,任何数据类型都可以向上造型为Object类型
向下造型过程中,需要保证被转的对象确实是目标类型的实例或其子类的实例
向下造型是不安全的,可以通过instanceof来判断能否被转换
接口和抽象类的区别和共性?
共性:不能被实例化
区别:
1.定义方法不同
2.抽象类可以有普通类中的所有内容,另外可以添加抽象方法,但是接口中只能定义抽象方法和常量
3.一个类只能继承一个抽象类,一个类可以继承多个接口
4.先继承类后继承接口
5.继承一个接口,会需要继承改接口需要实现的所有的抽象方法,抽象方法会向下传递,直到方法被实现