引用:
C#首席架构师:版本控制、虚拟化和覆盖
网址:http://www.youkuaiyun.com/article/2012-09-17/2810048-Anders-Hejlsberg-on-Versioning-Virtual-O
在Java中,实例方法默认是虚拟化的,只有显式声明为final时,才可以在子类中被覆盖
public class Father {
public int getInt(){
System.out.println("Father getInt()");
return 1;
}
public int setInt(){
System.out.println("Father setInt()");
return 2;
}
}
public class Son extends Father {
public int getInt(){
System.out.println("Son getInt()");
return 3;
}
public int setInt(){
System.out.println("Son setInt()");
return 4;
}
}
public class MainCeshi {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Father fa=new Son();
System.out.println(fa.getInt());
System.out.println(fa.setInt());
System.out.println("----------------------------");
Son so= new Son();
System.out.println(so.getInt());
System.out.println(so.setInt());
}
}
//输出结果
Son getInt()
3
Son setInt()
4
----------------------------
Son getInt()
3
Son setInt()
4

本文通过一个Java示例,展示了如何实现父类的方法在子类中的覆盖,并解释了实例方法默认为虚拟化(非静态绑定)的概念,即方法调用取决于运行时对象的实际类型。

被折叠的 条评论
为什么被折叠?



