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

【Java】多态性

程序员文章站 2024-03-21 19:24:46
...

概念:多态就是指一个引用,在不同的情况下的多种状态,也可理解为多态是通过指向父类的指针,来调用在不同子类中实现的方法。(父类的引用能保存子类的地址)
父类调用子类,父类能调用子类继承的属性和方法和子类重写方法,子类添加方法不能调
父类不能调用子类添加方法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("芦花鸡");
	} 
}

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