Java中关于绑定的那些概念

  • 绑定: 将一个方法调用同一个方法主体关联起来被称作绑定。
  • 前期绑定: 在程序执行前进行绑定,叫做前期绑定。
  • 后期绑定: 在运行时根据对象的类型进行绑定,叫做后期绑定。后期绑定也叫做动态绑定运行时绑定

下面结合具体代码讲讲后期绑定这件事儿:

/**
 * @Description 乐器
 * @Author .Mark
 * @Date 2019年2月28日
 */
public class Instrument {
    // 演奏
    public void play() {
        System.out.println("Instrument play music.");
    }
}

/**
 * @Description 钢琴
 * @Author .Mark
 * @Date 2019年2月28日
 */
public class Piano extends Instrument {
    // 演奏
    @Override
    public void play() {
        System.out.println("Piano play music.");
    }
}

/**
 * @Description 吉他
 * @Author .Mark
 * @Date 2019年2月28日
 */
public class Guitar extends Instrument {
    // 演奏
    @Override
    public void play() {
        System.out.println("Guitar play music.");
    }
}

/**
 * @Description 音乐家
 * @Author .Mark
 * @Date 2019年2月28日
 */
public class Musician {
    // 表演
    public void perform(Instrument instrument) {
        instrument.play();
    }
    
    public static void main(String[] args) {
        Musician musician = new Musician();
        musician.perform(new Instrument());
        musician.perform(new Piano());
        musician.perform(new Guitar());
    }
}

// output:
//		Instrument play music.
//		Piano play music.
//		Guitar play music.

我现在有一个父类Instrument,有两个子类PianoGuitar继承自Instrument,并重写了play方法。然后再创建一个Musician类,这个类有一个方法perform,入参是Instrument

子类继承父类,父类对外提供的接口,子类肯定都有。所以Musician类的perform方法能接受Instrument类型的入参,也可以接受PianoGuitar类型的入参。

直到Musicianperform方法被调用,才能知道具体是谁在调用play方法,这个就是动态绑定了

动态绑定依赖于多态,正是因为可以使用父类的引用指向子类的对象,所以在执行Musician类的perform方法时,我才可以根据入参去用Piano演奏、用Guitar演奏。这极大的增加了perform的灵活性,因为在表演之前我并没有对外说明具体用什么乐器表演,我只说了音乐家要演奏乐器,所如果今天音乐家有表演,但是钢琴出了故障,那么我还可以用吉他演奏。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值