1.多态
多态是在继承或者实现情况下的一种现象,变现为:对象多态、行为多态。
对象多态:有继承/实现关系;存在父类引用指向子类对象。
行为多态:在对象多态的基础上并且存在方法重写。
(1)类型转换
自动类型转换:父类.变量名=new 子类();
强制类型转换:子类.变量名=(子类)父类变量;//此功能用于想要调用子类中父类没有定义的方法,不强转的话,不满足编译看左,执行看右。
(2)instenceof关键字
instenceof的用法:父类变量 instenceof 子类类型
instenceof的作用:用于判断父类变量是否是基于某个子类创建的。
拓展
Teacher teacher =new Teacher(); //Teacher类继承于People类
People people=teacher;//可以这样功能同People people=new Teacher()一样;
2.final
(1)final关键字是最终的意思,可以修饰类、方法和变量。
- 修饰类:该类被称为最终类,类不能在被继承
- 修饰方法:该方法被称为最终方法,方法不能被重写。
- 修饰变量:该变量只能被赋值一次,赋值完毕之后不能在修改。
(2)final修饰变量的注意事项
- final修饰基本数据类型时,该变量存储的数据不能被改变。
- final修饰引用数据类型时,该变量存储的地址不能被改变,但地址所指向对象的内容时可以被改变的。
3.抽象类
(1)什么是抽象类?
abstract可以修饰类和方法,修饰类时该类被称为抽象类,修饰方法时该方法被称为抽象方法。
(2)抽象类的特点
抽象方法所在的类一定是抽象类,抽象类中不一定有抽象方法。
抽象类不能创建对象,仅作为一种特殊的父类,让子类继承并事项。
一个类继承抽象类,必须重写抽象类中的全部抽象方法,否则这个类也必须定义成抽象类。
4.模板设计模式
(1)概述
模板方法就是在抽象类中定义一个模板方法,并将其中不同的代码抽出生成抽象方法,在子类中完成抽象方法的重写。
(2)步骤
1、定义一个抽象类(父类),提供模板方法
2、模板方法中,需要让子类自己实现的地方,定义为抽象方法
3、子类只需要继承该抽象类,重写抽象方法即可完成些完成的功能
建议使用final关健字修饰模板方法,也就是将work方法用final修饰(上图中没加),模板方法是给对象直接使用的,不能被子类重写。
5.接口
(1)什么是接口
用关键字interface定义出的特殊结构称为接口。
(2)接口的注意事项
接口中定义的成员变量默认是被public static final修饰的。
接口中定义的成员方法默认是被public abstract修饰的。
接口不能直接创建对象。
接口是用来被类实现的,实现接口的类称为实现类。
一个类可以实现多个接口,同时也必须重写多个接口中的全部抽象方法,否则该类是抽象类,不能是接口。
(3)接口中的三种形式
(4)接口的注意事项
当接口和父类有同名方法时,子类中不需要强制重写接口中的同名方法,前提是父类中的同名方法不是抽象方法。
拓展
一个接口被实现类实现后,可以通过 实现类类名.成员变量名 来访问。因为接口中的成员变量是静态的。类之间的继承亦是如此。