【Java】多态性

概念:多态就是指一个引用,在不同的情况下的多种状态,也可理解为多态是通过指向父类的指针,来调用在不同子类中实现的方法。(父类的引用能保存子类的地址)
父类调用子类,父类能调用子类继承的属性和方法和子类重写方法,子类添加方法不能调
父类不能调用子类添加方法Subject

下面是一个简单的例子能帮助我们理解Java的多态性

Person类有个eat方法,可能今天想吃鸡,明天想吃鸭,eat方法可能会因客户的需求而改变,如果改变Person类的代码可能会带来很多问题,此时如果用多态来解决,就能做到不改变源程序代码就可以选择多个运行状态。如果没有多态,Person类里就要添加很多方法,有了多态,不论需求者的要求怎么变化,一个方法就能搞定。

public class Person {
	private String name;
	public Person(String name2) {
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public void eat(Food c) {//c保存子类的方法,调用子类
		System.out.println(this.name + "吃" + c.getName());
	}
}

Food类是抽象类,不需要new分配内存,只做引用,实例化出来无意义,因此常和abstract关键字连用。
public abstract class Food {
private String name;

public String getName() {
	return name;
}

public void setName(String name) {
	this.name = name;		
}

}

Duck类继承了父类Food

public class Duck extends Food{
	public Duck() {
		this.setName("芦花鸭");
	    }
      }
      
      
}

Coke继承了父类Food

public class Coke extends Food{
	public Coke() {
		this.setName("芦花鸡");
	} 
}

多态必须存在继承,重写,父类引用指向子类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值