标签归档:Java

Java函数调用过程

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()方法进行调用。

Advertisements