public class B extends A{
private int t = 0;
public void show(){
System.out.println("子类") ;
}
public static void main(String[] args){
A t = new B();
t.doIt();
}
}
class A {
public void doIt(){
show();
}
public void show(){
System.out.println("基类");
}
}
程序运行结果是:子类 在Java中程序对象中函数处理的过程是: 编译器在选择在运行期将被调用的方法时,所做的第一件事就是在肯定能找到该方法的范围内挑选。编译器将在包含了具有恰当名字的方法的最小闭合范围内进行挑选。对于 A a = new B () ,编译期类型是A ,运行期类型是B。在上述代码中通过调用doIt()方法,调用show()方法,看似调用的是A中的show()方法,实则是调用的是B中的show()方法,因为此时运行期类型是B,B中有两个show()方法,Jvm就会选择子类中的show()方法进行调用。
Java函数调用过程-编译期-运行期
最新推荐文章于 2024-06-23 21:48:40 发布