类中的方法是动态绑定的,属性是静态绑定的。
代码:
public class man {
String name="li";
public String GetName(){
return name;
}
}
public class student extends man{
String name="wang";
public String GetName(){
return name;
}
}
public class demo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
man man1=new man();
man man2=new student();
System.out.println(man1.name+":"+man1.GetName());
System.out.println(man1.name+":"+man2.GetName());
}
}
输出:li:li
li:wang
属性是静态绑定到类型,方法是动态绑定的,由最终对像的方法决定。
因此可以确定属性是静态绑定的,定义为什么类型,就调用此类型的方法。
为避免方法的静态绑定可采取以下方法:1.子类父类定义不同的属性。2.用方法来调用属性