java——多态

来源:互联网 发布:js 显示emoji表情代码 编辑:程序博客网 时间:2024/05/18 13:30

java中的多态体现在一个变量可以引用多个不同类对象,但前提是这些不同的类必须有相同的父类。从而该变量可以且只能调用每个不同对象之间的公共操作集(方法)

在java中,父类变量可以引用子类对象,即Person p = new Chinese();

但是变量p只能调用共同的成员属性和方法。当子类中已经覆盖继承的方法时,父类的变量调用的将是子类中已重写(Overriding)的方法,重写Overriding是父类与子类之间多态性的一种表现。

代码:

public class Dog {private String getName(){return "Dog";}public String bark(){return "wang-wang";}public void call(){System.out.println("It's "+getName()+" "+bark());}}

public class MiniDog extends Dog{private String getName(){return "Mini";}public String bark(){return "woo-woo";}}

public class Test {public static void main(String args[]) {Dog d = new MiniDog();d.call();MiniDog md = new MiniDog();md.call();}}

=======================================================================================

运行结果是:

It's Dog woo-woo
It's Dog woo-woo

解释:

(1)d调用的是自己的call()方法和getName()方法,因为bark()被重写覆盖所以调用的是子类的。注意:getName()方法没有被重写,因为是父类私有的,对子类来说是不可见的,被隐藏起来。

(2)第二个名字还是Dog是因为子类没有实现call()方法,用的是父类的call(),在call()里调用的还是父类的getName()。



0 0