Java多态(封装的三弟、继承的二弟)
多态
在Java中,多态是指不同类的对象在调用同一个方法时所呈现出的多种不同行为。
通常来说,在一个类中定义的属性和方法被其他类继承或重写后,当把子类对象直接赋值给父类引用变量时,相同引用类型的变量调用同一个方法将呈现多种不同形态。
代码体现多态性:其实就一句话:父类引用指向子类对象。
Java的多态性是由类的继承、方法重写以及父类引用指向子类对象体现的。
由于一个父类可以有多个子类,多个子类都可以重写父类方法,并且多个不同的子类对象也可以指向一个父类;
这样,程序只有在运行时才能知道具体代表的是哪个子类对象,这就体现了多态性
文献上对多态的作用是这样描述的:通过多态,消除了类之间的耦合关系,大大提高了程序的可扩展性和可维护性。
* 格式:左父右子
①父类名称 对象名 = new 子类名称();
②接口名称 对象名 = new 实现类名称();
*右边的子类对象可以当做父类进行使用
* 一只猫当做动物看待是可以的
* 在多态中,访问成员方法的规则:看new的是谁,就优先用谁,没有则向上找
面向对象三大特征:封装性继承性多态性
extends是继承 implements是实现
这俩是多态性的前提
对象的类型转换
* 1.对象的向上转型,其实就是多态的写法
* 格式:父类名称 对象名 = new 子类名称();
* 含义:右侧创建的是个子类对象,把它当父类看待使用
* 注意事项:
①向上转型一定是安全,从小范围转型大范围,小范围的猫,向上转型成为大范围动物
类似于 double num = 100;//正确 int--->double 自动类型转换
* 2.对象的向下转型,其实是一个[还原]动作
* 格式:子类名称 对象名 = (子类名称)父类对象
* Animal animal = new Cat();//本来是猫,向上转型成为动物
* Cat cat = (Cat)animal;//本来是猫,被当做动物看待,还原回来成为猫
* 注意事项:
* ①必须保证对象创建的时候,就是猫,才能还原向下转型成猫
* ②如果对象创建的时候不是猫,非要还原成猫,就会报错ClassCastException