多态是父类变量引用子类的实例对象,解决了函数同名的问题。比如子类重写(就是覆盖)父类的方法,当用父类变量引用子类的实例对象时,调用同一方法,但是会得到不同的结果。如果你的某一个操作具有不同的行为动作,就可以使用多态,这样将能避免在同一个方法中使用大量if()else()语句进行判断,而且大大的增强的程序的健壮性 。当你开发大型项目时,就知道多态的用处了。
比如:
public class School {
public static void main(String[] args) {
sayHello(new Student());
sayHello(new Teacher());
sayHello(new Worker());
}
public static void sayHello(Person s){
s.SayHello();
}
}
这样,你就可以看出多态的魅力了:
同一个方法,传入不同的对象,执行不同对象的相应方法。假如你要普通方法写一下看看?
补充:就比方说,一个领导安排任务呢,他肯定会说所有的程序员今天晚上加班。而不是说:X张三,王五,赵四。。。。加班,对吧。多态就是这样的作用,便于集中管理。
多态的引入使你在创建对象的时候不用关心对象的具体类型。例如创建s、t、w时,没有引入多态时分别用了Student Teacher Worker三个类,而在后面的例子中只用到了他们共同的父类Person,提高了代码复用性。这个例子反映了对象的多态性,是多态性的一个重要特点。
4楼说的正确啊
不过在补充点 就是你列子2个所有的子类都可以用父类的引用来操作 如果你的对象很多的话(其实复杂的程序你根本就不知道具体要创造出多少对象)你不能只用单一的自己定义的引用去管理 这个时候需要容器来管理(list map 数组什么的) 这个时候用一个父类的容器就能管理所有子类的对象~
比如,你的3个子类我只要运行一个,你可以将要运行的子类名称写在一个配置文件中,然后运用反射机制来构建出那个子类的一个对象,那样当你想换一个子类运行时,你就可以去配置文件中把名字改一下,源程序连main()方法都不需要改变,就可以正常运行。