对继承的一点点理解,可能不完全正确,还请大家指出错误。

今天认真的看了一下 JAVA SE 的东西,感觉对继承有了更加深刻得理解。(不过,我感觉啊,像我这些还没有达到大牛的水平,知道了这些原理,也不知道怎么用,哈哈,还是先理解吧,说不定有助于我们蜕变成大牛呢!!!希望是这样),好了,废话说完,下面正式开始。

先来看一个例子啊:

 

大家都知道打印出来的结果是   A  。  

现在把代码变一下(将类B中的 test 改成 test01):

这个时候,编译器就会报错。

好,现在再把代码变一下:

在这中情况下呢,编译器没有报错,程序可以正常运行。这个大家都知道,我就不多说了。

总结:我们要从三种情况的不同结果,找出藏在表面现象里面的运行原理。好了,我是这样理解的,程序在编译时,编译器会先看看是申明的是那个类,就是 A a ;  或者是  B b ;  如果是 A a ;,那编译器就先会看看类A里面有没有test这个方法,如果没有,就向上转型,看看类B里面有没有test这个方法(如果B还继承其他的类,那就还要继续向上转型,看有没有test这个方法),现在找到了test方法了,所以程序编译就不会出错;那么运行时的时候呢,JVM就会看申明的是指向那个对象的引用,首先看看这个对象有没有test方法,如果没有,就向上转型,一直找到test方法为止(不会找不到test方法的,因为在编译期,就确保了一定要有test方法,如果还是不理解就看前面的几句话)。现在我用一句话总结一下:编译看申明,运行看实际指向的对象,没找到方法就向上转型,一直找到为止

呵呵,我就是这样理解的了,可能说的有些乱,希望对某些新手能有一点帮助啦,当然,我那里说错了,请大家也给我指出来...

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值