Java之前期绑定,后期绑定,简单理解和实例

开心一笑

【今天我对老公撒娇:老公你夸夸我呗!老公面无表情的看看我,一言不发。我有点生气,怎么遭,以前叫你夸我,你还会随便敷衍几句,现在连敷衍都不想了吗?老公:随便你怎么说,我只是觉得不配跟仙女说话!】

视频教程

大家好,我录制的视频《Java之优雅编程之道》已经在CSDN学院发布了,有兴趣的同学可以购买观看,相信大家一定会收获到很多知识的。谢谢大家的支持……

视频地址:http://edu.csdn.net/lecturer/994

提出问题

java中的前期绑定,后期绑定如何理解???

解决问题

绑定:一个方法的调用与方法所在的类(方法主体)关联起来。

前期绑定:final,static,private,构造方法,成员变量(包括静态及非静态)

后期绑定(多态):除了前期绑定之外的其他方法属于后期绑定,运行时能判断对象的类型进行绑定。

人类(Person):

/**
 * 描述:人类
 * @author Ay
 *
 */
class Person extends Object{

    protected String UNIQUE_FLAG = "Person";

    /** 心 **/
    private Heart heart;

    public Person(){
        System.out.println("Person created......");
    };

    public Person(String id,String name){
        super(id,name);
    }

    public Person(String name){
        super(name);
    }

    public Heart getHeart() {
        return heart;
    }

    public void setHeart(Heart heart) {
        this.heart = heart;
    }

    /**
     * 描述:购买
     * @param <E>
     * @return
     */
    public static <E> List<E> buy(E arg,int num){
        return MagicStore.get(arg,num);
    }

    public static void birth(){
        System.out.println("降临人世间......");
    }

    public static void die(){
        System.out.println("走向人间天堂......");
    }

    public void breath(){
        System.out.println("Person" + "呼吸......");
    }
}

男孩(Boy):

/**
 * 描述:男孩
 * @author Ay
 *
 */
class Boy extends Person{

    protected String UNIQUE_FLAG = "Boy";

    /** 男孩的心 **/
    private Heart heart;

    public Boy(){
        System.out.println("Boy created......");
    }

    public Boy(String name){
        super(name);
    }

    Boy(String id,String name){
        super(id, name);
    }

    public static void birth(){
        System.out.println("Boy" + "降临人世间......");
    }

    public static void die(){
        System.out.println("Boy" + "走向人间天堂......");
    }

    @Override
    public void breath(){
        System.out.println("Boy" + "呼吸......");
    }
}

测试类:

public class AyTest {

    public static void main(String[] args){

        //男孩产生,用Person引用,打印 1和2结果
        Person boy = new Boy();
        //男孩出生,由于birth是静态方法,是前期绑定,所以调用person的birth方法
        boy.birth();
        //final常量也是前期绑定,所以调用父类Person的UNIQUE_FLAG常量
        System.out.println(boy.UNIQUE_FLAG);
        //breath是后期绑定,所以调用boy的breath方法
        boy.breath();
        //编译报错,访问权限的原因
        boy.heart;
    }

}

打印结果:

Person created......  1
Boy created......     2
降临人世间......       3
Person                4
Boy呼吸......         5

参考文章

【1】理解Java中的前期绑定和后期绑定

【2】Java前期(静态)绑定和后期(动态)绑定

【3】Java的前期绑定和后期绑定[新]

【4】Java编程思想(Thinking in Java)

读书感悟

《写在人生边上》钱钟书

  • 我们在创作中,想象力常常贫薄可怜,而一到回忆时,不论是几天还是几十年前、是自己还是旁人的事,想象力忽然丰富得可惊可喜以致可怕。
  • 早熟的代价是早衰。
  • 永远快乐”这句话,不但渺茫得不能实现,并且荒谬得不能成立。快过的决 不会永久;我们说永远快乐,正好像说四方的圆形,静止的动作同样地自相矛盾。 在高兴的时候,我们空对瞬息即逝的时间喊着说:“逗留一会儿罢!你太美了!” 那有什么用?你要永久,你该向痛苦里去找。
  • 洗一个澡,看一朵花,吃一顿饭,假使你觉得快活,并非全因为澡洗得干净,花开得好,或者菜合你口味,主要因为你心上没有挂碍。

其他

如果有带给你一丝丝小快乐,就让快乐继续传递下去,欢迎点赞、顶、欢迎留下宝贵的意见、多谢支持!

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿_毅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值