【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("芦花鸡");
}
}
多态必须存在继承,重写,父类引用指向子类