java基礎(chǔ)入門(mén)-動(dòng)態(tài)綁定-調(diào)用方法的過(guò)程
來(lái)源:程序員人生 發(fā)布時(shí)間:2015-05-28 09:09:17 閱讀次數(shù):2519次
先上代碼
package com.ray.testobject;
/**
* 調(diào)用方法的進(jìn)程
*
* @author ray
* @since 2015-05-01
*
*/
public class Person {
public void say() {
System.out.println("i am a person");
}
public void say(int age) {
System.out.println("i am " + age);
}
public void say(String name) {
System.out.println("my name is " + name);
}
public static void main(String[] args) {
Person person = new Person();
person.say("jack");
}
}
輸出:
my name is jack

進(jìn)程以下:
1.先找到person這個(gè)對(duì)象變量所對(duì)應(yīng)的變量,也就是找到了Person這個(gè)類(lèi)實(shí)例出來(lái)的對(duì)象
2.再在Person這個(gè)類(lèi)所生成的對(duì)象里面,查找想要的方法簽名
方法簽名=方法名稱(chēng)+參數(shù)類(lèi)型
注意:這里沒(méi)有觸及返回類(lèi)型
3.對(duì)調(diào)用person.say(”jack“)來(lái)講,編譯器先會(huì)挑選say(String),而不是say(int)或say()
由于java里面允許類(lèi)型轉(zhuǎn)換,所以如果找不到,他會(huì)相應(yīng)的往他的父類(lèi)去找,如果沒(méi)有找到,則返回異常
其實(shí)這里面的查找進(jìn)程非常復(fù)雜,而且開(kāi)消很大,所以jvm會(huì)編制1張方法表(method table),然后jvm
直接找這個(gè)表便可
4.找到想要的方法,調(diào)用便可
生活不易,碼農(nóng)辛苦
如果您覺(jué)得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)