【Java】静态绑定和动态绑定

在Java的方法调用上,存在静态绑定和动态绑定两种类型,下面对这两种类型的区别进行了举例:

  1. Java中的静态绑定是发生在编译阶段,然而动态绑定是在程序运行时发生的;
  2. private, final, static等修饰的方法和变量都是采用静态绑定的;
  3. 静态绑定使用Java Class类型来获取信息的,然而动态绑定是使用当前运行时的对象来获取相关信息的;
  4. 重载的方法使用静态绑定,而重写的方法使用动态绑定;

动态绑定示例

package com.jiangjian.study.java.method;

public class MethodDynamicBindingTest {
    public static void main(String[] args) {
        Vehicle vehicle = new Car();
        vehicle.start();
    }
}

class Vehicle {
    public void start() {
        System.out.println("Inside start method of Vehicle");
    }
}

class Car extends Vehicle {
    public void start() {
        System.out.println("Inside start method of car");
    }
}

结果为: Inside start method of car

静态绑定示例


package com.jiangjian.study.java.method;

import java.util.Collection;
import java.util.HashSet;

public class MethodStaticBindingTest {

    public static void main(String[] args) {
        Collection c = new HashSet();
        MethodStaticBindingTest et = new MethodStaticBindingTest();
        et.sort(c);
    }

    public Collection sort(Collection c) {
        System.out.println("Inside Collection sort method");
        return c;
    }

    public Collection sort(HashSet hs) {
        System.out.println("Inside HashSet sort method");
        return hs;
    }
}

结果为: Inside Collection sort method

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值