Java语言中最重要的是面向对象的编程思想,而面向对象重要的就是多态。
多态:什么是多态,顾名思义 多态就是事物多样的形态。
多态前提 : 必须有继承关系,才可以有多态
多态意义 : 必须有子类重写父类方法 才可以使多态有意义。 如果只是单单进行了子类继承父类 这样 多态是没有任何意义的。
多态: 向上转型和向下转型
向上转型:
父类变量引用子类对象。
父类变量可以去调用子类和父类共同拥有的属性和方法。
向下转型:
由于向上转型 父类变量只能调用 子类和父类共同的方法和属性,无法调用子类特有的属性和方法
因此 如果需要父类变量去引用子类特有的属性和方法 就需要向下转型 。
注: 向下转型应当保证两边的对象相同。
比如:
Animal animal = new Dog(); //向上转型
Cat cat = (Cat)animal //需要强转
这就是问题所在 这只狗你可以说是一只动物 但你能说这只狗是一只猫吗? 当然不能
因从向下转型应当注意。可以用instanceof
instanceof严格来说是Java中的一个双目运算符,用来测试一个对象是否为一个类的实例