多态

多态

多态 :多种状态,对象不同 相同的方法可能会产生不同的行为

多态的好处
提高了代码的扩展性,前期定义的代码可以使用后期的内容
比如下面添加其他具体机器类,都可以实现run()方法,父类引用型变量绑定通过不同的对象调用同名的不同方法

多态的缺点
前期定义的内容不能使用后期子类的特有方法
每个具体的特有方法,那么Vehicle类型变量就无法访问,必须向下转换为子类对象

对象类型的隐式转换和显示转换

向上转换:是为了实现功能的扩展性
向下转换:是为了使用子类的特有功能

多态的要点

1.多态是方法的多态,不是属性的多态(属性与多态无关)
2.多态存在的3个必要条件:继承 ,方法重写,父类引用指向子类对象
3.父类引用指向子类对象后,用该父类调用子类重写方法,此时多态就出现了

例子

public class TestAgain {
	public static void main(String[] args) {
		Vehicle pl =new Plane();
		pl.run();//自动类型提升,Plane对象提升为了Vehicle(向上转型),但是特有功能无法访问
	//	pl.stop(); //无法访问Plane的特有方法
	
		Vehicle a = new Car();
		act(a);//把子类对象 传递给父类引用
	}
	
	public static void act(Vehicle v) {
		v.run();
		if(v instanceof Plane)
			((Plane) v).stop();
		if(v instanceof Car)
			((Car) v).stop();
	}
}

class Vehicle{
	public void run(){
		System.out.println("动起来了");
	}
}
class Plane extends Vehicle{
	public void run() {
		System.out.println("起飞了");
	}
	public void stop() {
		System.out.println("坠机了");
	}
}
class Car extends Vehicle{
	public void run() {
		System.out.println("油门响了");
	}
	public void stop() {
		System.out.println("车爆胎了");
	}
}

结果:
起飞了
油门响了
车爆胎了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值