您的位置:首页 > 编程语言 > Java开发

Java域隐藏、静态方法隐藏、动态绑定、静态绑定

2015-08-10 17:37 555 查看
1、域隐藏

当子类继续父类时,出现相同字段时父类字段不会将子类字段覆盖,而只是将其“隐藏”。

例子:

父类:

[java] view
plaincopy





public class Super {

public int field=0;

public int getField() {

return field;

}

}

子类:

[java] view
plaincopy





public class Sub extends Super {

public int field=1;

public int getField() {

return field;

}

public int getSuperField(){

return super.field;

}

}

测试:

[java] view
plaincopy





public class Test {

public static void main(String[] args) {

// TODO Auto-generated method stub

Super sup=new Sub();

System.out.print(sup.field+" "+sup.getField());//对于域的访问由编译器决定(静态绑定)

}

}

结果:0 1

结论:从结果可以知道,子类field字段并没有将父类的field字段覆盖,而只是“隐藏”而已;另外也可以知道对于域(字段)的访问是由编译器决定的,即静态绑定。

2、静态方法隐藏

例子:

父类:

[java] view
plaincopy





public class Father {

public static void display(){

System.out.println("father");

}

}

子类:

[java] view
plaincopy





public class Son extends Father{

public static void display(){

System.out.println("son");

}

}

测试:

[java] view
plaincopy





public static void main(String[] args) {

Father f=new Son();

Son s=new Son();

s.display();

f.display();

}

结果:

son

father

结论:对于静态方法,子类中的静态方法也不会覆盖父类中的静态方法,而只是“隐藏”而已,具体调用哪个方法取决于对象引用类型;对于普通方法则是覆盖。

3、静态绑定与动态绑定

静态绑定是指在程序运行前方法已经由编译器绑定;由final,static,private的方法、构造方法以及字段是前期绑定(静态绑定)

动态绑定是指在程序运行过程中动态绑定需要被执行的方法。除上述方法以外的方法均属于动态绑定。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: