Java学习心得10——多态

多态

一种类型的变量可以掌管多种类型的对象,这就是多态。

说人话:
直观理解成多种形态。人类就是多态的,黄种人、白种人、黑种人都是属于人类,人类这一个类可以表示黄种人、白种人、黑种人这三个类,这不就是多态多种形态吗?

回到编程:
Animal(动物)类型的变量可以有多种形态,它可以管理它的子类Cat、Dog、Fish、Tiger……的对象,也就是说可以这样写:

Animal animal1 = new Cat();
Animal animal2 = new Dog();
Animal animal3 = new Fish();
Animal animal4 = new Tiger();

类方法的多态

与变量一样,类的方法也是有多态性的。
举个例子:
一个Animal类型的变量,如果调用它的.bark()方法,那么这个方法的实现也是多态性的。
如果这个Animal类型变量实际管理的是Cat对象,那么我们在使用.bark()时就会调用Cat类的.bark()方法,如果它实际管理的是一个Dog对象,那么就会调用Dog类的.bark()。(如果Cat或Dog类没有.bark()方法则调用Animal的.bark()方法)也就是说,根据不同的对象,调用不同的方法。
不妨做个测试,我们将Cat对象交给一个Animal变量,然后使用.bark()方法,看看它究竟使用了Cat的.bark()方法还是Animal的.bark()方法:

Animal类代码:

package zoom;

public class Animal {
	public void bark() {
		System.out.println("I am Animal");
	}
	public static void main(String[] args) {
		Animal animal = new Cat(); 
		animal.bark();
	}
}

Cat类代码:

package zoom;

public class Cat extends Animal {
	@Override
	public void bark() {
		// TODO Auto-generated method stub
		System.out.println("喵");
	}
}

运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值