Thinking in java--随笔

来源:互联网 发布:卡尔曼滤波算法 应用 编辑:程序博客网 时间:2024/06/05 23:04

“覆盖”私有方法

public class Father {    private void fun(){        System.out.println("Father");    }    public static void main(String[] args) {        Father f = new Child();        f.fun();    }}class Child extends Father{    public void fun(){        System.out.println("Child");    }}

很多人会认为输出的结果为:Child。但是,实际上输出结果为:Father.因为private方法被自动认定为final方法,它对导出类是隐藏的,所以Child中的fun()方法就是一个全新的方法,既然Father中的fun()方法对于导出类是不可见的,所以不能被重载。


域与静态方法

class Super{    public int field = 0;    public int getField(){        return field;    }}class Sub extends Super{    public int field = 1;    public int getField(){        return field;    }    public int getSuperField(){        return super.field;    }}public class FieldAccess {    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 = 1
sub.field = 1,sub.getField = 1,sub.getSuperField = 0

当Sub对象转型为Super引用时,任何域访问操作都将由编译器解析,因此不是多态的。
在本例中,为Super.field和Sub.field分配了不同的存储空间。这样,Sub实际上包含了两个称为field的域:它自己的和它从Super处得到的。然而,在引用Sub中的field时所产生的默认域并非Super版本的field域,因此,为得到Super.field,必须显式地指明super.field。


如果某个方法是静态的,它的行为就没有多态性

class StaticSuper{    public static String staticGet(){        return "Base staticGet";    }    public String dynamicGet(){        return "Base dynamicGet";    }}class StaticSub extends StaticSuper{    public static String staticGet(){        return "Derived staticGet";    }    public String dynamicGet(){        return "Derived dynamixGet";    }}public class StaticPolymorphism {    public static void main(String[] args) {        StaticSuper sup = new StaticSub();        System.out.println(sup.staticGet());        System.out.println(sup.dynamicGet());    }}
Base staticGetDerived dynamixGet

静态方法是与类,而并非与单个的对象相关联。

原创粉丝点击