静态绑定和动态绑定

Java中的静态绑定与动态绑定:

在 Java 中,绑定指的是将方法调用与实际的方法实现进行关联的过程。绑定有两种主要形式:静态绑定(也称为早期绑定或编译期绑定)和动态绑定(也称为晚期绑定或运行期绑定)。

静态绑定:

静态绑定通常发生在编译阶段。当方法调用的位置是在编译时期就已经确定时,就发生了静态绑定。静态绑定的例子包括静态方法、私有方法、构造器以及最终方法等。

代码示例如下:

package oneHundredDayPlan.fourDay;

//静态绑定代码示例
public class One {
    public static void main(String[] args) {
        System.out.println(add(5, 10));//静态方法
    }

    public static int add(int a, int b) {
        return a + b;
    }
}

动态绑定:

与静态绑定不同,动态绑定通常发生在运行时。当方法调用的位置是在运行时期才能确定时,就发生了动态绑定。动态绑定主要与继承和多态有关,即当通过父类引用调用子类的方法时。

代码示例如下:

package oneHundredDayPlan.fourDay;
//动态绑定代码示例

class Animal {
    public void dynamicBinding() {
        System.out.println("dynamic binding");
    }
}

class Dog extends Animal {
    @Override
    public void dynamicBinding() {
        System.out.println("dynamic");
    }
}

class Cat extends Animal {
    @Override
    public void dynamicBinding() {
        System.out.println("binding");
    }
}

public class Two {
    public static void main(String[] args) {
        Animal a = new Dog();
        a.dynamicBinding();//dynamic

        Animal b = new Cat();
        b.dynamicBinding();//binding
    }
}

在这个例子中,dynamicBinding()方法是通过Animal引用来调用的,但实际上调用哪个类的方法取决于运行时创建的对象是什么,这就是动态绑定的一个例子。

总结:

静态绑定:

在编译时期就能确定方法调用的目标。例如:静态方法、构造函数、最终方法等。

动态绑定:

在运行时才能确定方法调用的目标,这是通过继承和多态来实现的。

通过以上示例可以看到静态绑定和动态绑定的区别在于方法的选择是在编译时期还是运行时期决定的。静态绑定通常涉及到固定的方法调用,而动态绑定涉及到多态的行为。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值