面向对象的三大特征之“多态”详解
程序员文章站
2024-03-21 20:25:16
...
多态
含义:在相关继承的子父类中子父类的不同表现形式。
先有下面的例子来感受一下:
class Animal {
}
class Tiger extends Animal{
}
class Panda extends Animal{
}
class Demo {
public static void main(String[] args) {
Animal animal = new Animal();
Tiger tiger = new Tiger();
Panda panda = new Panda();
Animal an = getBreed(animal);//此处返回一个Animal对象
//如果传入一个Tiger对象
Animal an1 = getBreed(tiger);//此处传入的tiger对象会返回一个Animal类型的对象,此处的意思相当于是把an的地址指向到了上面的tiger指向的堆内存中的对象。
//同理:传入Panda对象也是一样的。
Animal an2 = getBreed(panda);
Panda panda1 = (Panda)getAnimal();//此处返回值类型的是一个Animal类型,但是返回的是一个Panda类型的对象。因此需要Animal类型,但是我们使用的是Panda类型的引用类型数据来对接,所以需要将得到的Animal类型的对象做一个向下的强制转型。
}
public static Animal getBreed(Animal animal) {
return new Animal();
}
public static Animal getAnimal() {
return new Panda();
}
}
总结:在子类对象的地址指向父类引用,这个过程叫做向上转型,小转大无需强转,而大转小,则需要强制转换。
1、父类引用指向子类对象。
2、接口引用指向实现类对象。