??????Java?????????????У?JVM????????????????????????????? ?????浽???????????? ???????????????JVM???????????(static binding) ??????????(auto binding) ??
?????????????
//?????????
package hr.test;
class Father{
public static void f1(){
System.out.println("Father— f1()"); } }
//???t?????? import hr.test.Father;
public class StaticCall{
public static void main(){
Father.f1(); //???t??????
}
}
??????????????????з???????????(Father.f1())?????????????????????invokestatic #13?????????JVM????δ???????????
????(1) ????е?#13?????StaticCall?????????е?13???????????????(??????????????Class?????????????? ??)???????????(CONSTATN_Methodref_info) ??????????f1????????????(????f1??????????????????????????)??JVM???????????????????????????f1??????????????: hr.test.Father??
????(2) ?????JVM???????????????Father??
????(3) ?????Father?????????????????f1()??????????????????????????????StaticCall?????????????13????????С????????г???????? ???????ε???Father.f1()???????????f1???????????
????(4) ?????StaticCall????????????13??????????????JVM???????f1()??????????????????f1()?????е???????
??????????????????????????????????????JVM????????????f1()????????????????λ???????????????????????????????StaticCall?????????м???????????????????????????????????????????????????????????? ??
?????????static ???ε????????????б?private ???ε???з???????final ???ε??????????????????????invokestatic?????????????????????<init>??<clinit>???????invokespecial??JVM????t????????????????????Щ??????
?????????????
package hr.test;
//??????????
class Father{
public void f1(){
System.out.println("father-f1()"); } public void f1(int i)
{
System.out.println("father-f1() para-int "+i);
} } //???????????
class Son extends Father{
public void f1(){
//???????????
System.out.println("Son-f1()");
} public void f1(char c){
System.out.println("Son-s1() para-char "+c);
} } //???÷???
import hr.test.*;
public class AutoCall{
public static void main(String[] args){
Father father=new Son();
//??? father.f1(); //???????? Son-f1()
}
}
?????????????????????????????????(polymorphism) ?????????? ?????????? ???????????????????????????JVM????????f.f1()???????????Sun?з?????????Father?е?????????????????????????????????????JVM?????????????????????——?????? ??
??????JVM???????????????????????????????????(?????Java ?????????? ??)?????????????????з????????????????????????????????г?????????????????????е?????? ??????????????????Father??Sun??????????е???????

????????е???????????????(1) ?????????м?????????????????Father extends Object?? (2) ????????(?????????????????????????б?)???????????????е??????????????Father???????е?f1()??Son???????е?f1()??λ????????????11???С?
??????????????????????????????main??????????????????????
????0 new hr.test.Son [13] //????п??????Son???????????????????????????????
????3 dup
????4 invokespecial #7 [15] // ???ó??????????????????е?Son????
????7 astore_1 //?????????????Son?????????????????1??
????8 aload_1 //??????????1?е?????????????????
????9 invokevirtual #15 //????f1()????
????12 return