关于java多态

来源:互联网 发布:linux 密码策略 编辑:程序博客网 时间:2024/05/16 10:07

     最近重温Java编程思想,看到一段代码,运行后的结果有点疑惑,贴出来让大家给分析一下:

 

    有一个Super类,如下:

package com.test2;public class Super {public int field = 0;public int getField() {return field;}}


    一个导出类,继承自Super.java,如下:

package com.test2;public class Sub extends Super {public int field = 1;public int getField(){return field;}public int getSuperField(){return super.field;}}


    一个主方法,代码如下:

package com.test2;public class FieldAccess {/** * @param args */public static void main(String[] args) {Super sup = new Sub();System.out.println("sup.field:" + sup.field + " sup.getField():"+ sup.getField());Sub sub = new Sub();System.out.println("sub.field:" + sub.field + ", sub.getField()"+ sub.getField() + ", sub.getSuperField()"+ sub.getSuperField());}}

 

    运行的结果:

 

sup.field:0, sup.getField():1sub.field:1, sub.getField():1, sub.getSuperField():0


    主要的疑惑就在结果的第1行,为什么sup.field取得的是父类的值(0),

    而sup.getField()却调的是子类的方法(返回的结果为1)?

 

    求解?

原创粉丝点击