动态绑定机制分为两点:
1、当调用对象方法时,该方法会和该对象的运行类型绑定
2、当调用对象属性时,没有动态绑定机制
public class AA {//父类
int count = 10;
public int eat(){
//这里使用动态绑定机制 方法绑定运行类型
return get1() + 10; //get1()指的是aa的运行类型BB中的get1() 即20+10
}
public int drink(){
//属性没有动态绑定机制
return count + 10;//count指的是本类中的 即10+10
}
public int get1(){
return count;
}
}
public class BB extends AA{//子类
int count = 20;
public int get1(){
return count;
}
}
public class Dynamic {
public static void main(String[] args){
AA aa = new BB();//向上转型
//由于aa的运行类型是BB 所以先在BB中查找调用eat() drink() get1()
//如果没有调用的方法,到父类中查找调用
System.out.println(aa.drink());//BB中没有该方法,到父类AA中查找调用
System.out.println(aa.get1());
System.out.println(aa.eat());//BB中没有该方法,到父类AA中查找调用
}
}