Java - 21 动态绑定机制

wxrwajiez / 2024-10-19 / 原文

Java - 21 动态绑定机制

  1. 方法具有动态绑定机制,当调用对象方法,该方法会和该对象的内存地址(运行类型)绑定
public class Main{
    public static void main(String[] args){
        A a = new B();
        System.out.println(a.sum());
    }
}

class A{
    public int i = 10;
    
    public int getI(){
        return i;
    }
    public sum(){
        return getI() + 10; // 执行到此处,a的运行类型是B,所以调用子类的getI()
    }
}
class B extends A{
    public int i = 20;
    
    public getI(){
        return i + 10;
    }   
}
  1. 属性没有动态绑定机制,哪里声明,哪里使用
public class Main{
    public static void main(String[] args){
        A a = new B();
        System.out.println(a.sum1());
    }
}

class A{
    public int i = 10;
    
    public int sum1(){
        return i + 10; // return 10 + 10
    }  
}
class B extends A{
    public int i = 20;    
}