一、多态
什么是多态,一个事物的多个形态(水:液态,固态,气态)
java语言中多态有好处,面向对象的好处,封装(类的复用,根据类创建对象),类越来越多(模板角度上来说,继承:活字印刷术,模板的复用)
今天的代码对软件需求变更或扩展更加灵活
前提条件:
父子类的继承,重写方法,父类引用指向子类对象
public static void eat(Animal a) {// 方法参数是父类(动态绑定)
a.eat();
}
public static void main (String [] args) {
eat(new Cat());
eat(new Dog());
eat(new Pig());
}
类型提升:父类引用指向子类对象(自定义类型的向上提升)
父类引用上进行强制类型转换(自定义类型的向下转型):解决多态的弊端(不能在父类访问子类的独有方法)
二、抽象类
抽象类是在我们原先继承的基础上进行了abstract关键字的约束,以后要分清楚是否还用普通类来定义
抽象类的注意事项:
抽象类:有构造方法,不能new,是给子类初始化
不一定要有抽象方法,但是一旦有了抽象方法,类必须是抽象的。
抽象类:成员变量,可以是变量,可以是常量
成员方法:可以是普通的方法,还可是抽象方法
一个类继承自抽象的类,可以是普通类(必须实现抽象方法)还可以是抽象类(可以不用实现抽象方法)
三、接口
在抽象类的基础之上把所有的方法都写成abstract,接口是一种能力。不会变化本质,对本质进行能力的扩展提升
接口的注意事项:
侧重点在能力,没有new构造方法
定义的是变量,会变成常量double PI = 3.1415926;
public static final double PI = 3.1415926,可以用接口名直接调用
中的方法全都是抽象的,要实现的话就要全部实现
经验:java的源码中很多都是用接口来做的,因为jdk工具不受行业约束,java(标准)
类和类的关系:继承、单继承、多层继承
类和接口的关系:实现、单实现、多实现
接口和接口的关系:可以继承、多继承(此处部分不好理解,不要现阶段掌握,以后在看jdk源码的时候能够感悟其中的奥秘(应用))
抽象类和接口:可以实现接口(实现接口:抽象类中有一个带方法体的实现方法,抽象类中继承接口)