面向对象三个特征:封装、继承、多态。
extends继承
或者implements实现
是多态性的前提(对象的多态性Polymorphism/Multi
)。
(一)格式:
父类名称 对象名 = new 子类名称();
//父类引用指向子类对象。接口名称 对象名 = new 实现类名称();
多态中成员变量/成员方法访问特点:
- 成员变量:编译看左,运行看左。
- 成员方法:编译看左,运行看右。
☆☆使用多态的好处:无论右边new的时候换成哪个子类对象,等号左边调用方法都不会改变。
对象的向上转型:
父类引用指向子类对象:父类名称 对象名 = new 子类名称();
把猫当做动物来看;创建一个子类对象,把它当做父类来看待使用。
注意:这个向上转型是肯定可行的,但缺点是无法调用子类所特有的方法,为了解决这一问题,需要对象的向下转型,将父类对象,[还原]成子类对象,就是把原来的动物还原成猫,可以使用猫的特有方法。
对象的向下转型(还原):
格式:子类名称 对象名 = (子类名称)父类对象;
Animal animal = new Cat();
//本来是猫,向上转型成了动物。
Cat cat = (Cat)animal;
//猫被当做了动物,现在还原成了猫。
注意:必须是对象本来创建的时候就是猫,才能向下转型成猫。如果不是这样的话,编译不会出错,但运行会出错。
用instanceof关键字
进行类型判断(能不能进行对象的向下转换):
对象名 instanceof 类型
返回boolean值