4、java的多态

来源:互联网 发布:php取cookie取出失败 编辑:程序博客网 时间:2024/06/11 15:56
class BaseClass{public int book = 6;public void base(){System.out.println("父类的普通方法");}public void test(){System.out.println("父类的test方法");}}class SubClass extends BaseClass{public String book = "子类的book";public void test(){System.out.println("子类的test");}public void sub(){System.out.println("子类的普通方法");}}public class Polymorphism {public static void main(String[] args){BaseClass ploymophicBc = new SubClass();System.out.println(ploymophicBc.book);ploymophicBc.base();ploymophicBc.test();//ploymophicBc.sub();}}

输出结果:

6
父类的普通方法
子类的test


父类BaseClass,子类SubClass。

声明BaseClass ploymophicBc = new SubClass();

则ploymophicBc的编译时类型是BaseClass,运行时类型是SubClass;

ploymophicBc.test()调用的是子类的test(),因为在运行时ploymophicBc这个对象总是表现出运行时类型的行为。

而ploymophicBc.sub()是不能通过编译的,因为编译时类型BaseClass没有这个方法。


这就是java的多态,跟c++差不多,不用写virtual,全部自带virtual。

注意,子类隐藏父类方法必须要两个方法的返回值也是一样的!!


ploymophicBc.book引用的是父类的变量,只有方法有多态,成员变量没有多态。

0 0
原创粉丝点击