多态
多态的前提:1、要有继承
2、要有方法重写
3、父类引用指向子类对象
多态中访问成员变量
编译看左边,运行看左边
多态中访问成员方法
编译看左边,运行看右边
多态中访问静态方法
编译看左边,运行看左边
多态的好处和弊端
好处:提高了代码的扩展性
弊端:不能使用子类特有的属性和行为
ClassCastException 类型转换异常
instanceof 判断前边的引用是否后边的数据类型
抽象类
abstract 抽象
用来修饰类,也可以修饰方法
抽象类的子类
1、要么子类也是抽象的 //没有什么意思的
2、要么重写抽象父类中抽象方法
抽象类中成员变量
可以是常量也可以是变量
抽象类中的抽象方法,我们继承之后需要重写抽象方法(重写之后就是一个具体的方法)。
abstract跟哪些关键字不能共存
static:因为abstract修饰的方法没有方法体,类名点调用没有意思
final:fianl是不能被继承,也就不能被重写,abstract要求子类必须重写方法,矛盾
private:abstract要求子类去重写,被private修饰之后子类不能重写了。
接口
interface的关键字
格式: interface 接口名 {
}
实现接口 implements
class Test implements 接口名 {
//实现接口里的抽象方法,接口里的方法都是抽象的。
}
接口可以多实现
接口中的成员变量
public static final 全都是常量
接口中的成员方法
全都是抽象的,都是公开的
类与类之间的关系
单继承,可以多层继承
类与接口之间的关系
实现的关系。可以多实现。
接口与接口之间的关系
继承关系。可以单继承,可以多继承
抽象类和接口之间的区别
方法:
抽象类中方法可以是非抽象的。
接口中方法都是抽象
抽象类中有构造方法
接口中没有构造方法
变量:
抽象类既可以是常量也可以是变量
接口中都是常量
设计理念来说,抽象类是“is a”,接口就是“like a”
|
|