欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

面向对象的三大特征之“多态”详解

程序员文章站 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、接口引用指向实现类对象。