对继承的一点点理解,可能不完全正确,还请大家指出错误。
来源:互联网 发布:大秦帝国之纵横知乎 编辑:程序博客网 时间:2024/04/27 09:19
今天认真的看了一下 JAVA SE 的东西,感觉对继承有了更加深刻得理解。(不过,我感觉啊,像我这些还没有达到大牛的水平,知道了这些原理,也不知道怎么用,哈哈,还是先理解吧,说不定有助于我们蜕变成大牛呢!!!希望是这样),好了,废话说完,下面正式开始。
先来看一个例子啊:
大家都知道打印出来的结果是 A 。
现在把代码变一下(将类B中的 test 改成 test01):
这个时候,编译器就会报错。
好,现在再把代码变一下:
在这中情况下呢,编译器没有报错,程序可以正常运行。这个大家都知道,我就不多说了。
总结:我们要从三种情况的不同结果,找出藏在表面现象里面的运行原理。好了,我是这样理解的,程序在编译时,编译器会先看看是申明的是那个类,就是 A a ; 或者是 B b ; 如果是 A a ;,那编译器就先会看看类A里面有没有test这个方法,如果没有,就向上转型,看看类B里面有没有test这个方法(如果B还继承其他的类,那就还要继续向上转型,看有没有test这个方法),现在找到了test方法了,所以程序编译就不会出错;那么运行时的时候呢,JVM就会看申明的是指向那个对象的引用,首先看看这个对象有没有test方法,如果没有,就向上转型,一直找到test方法为止(不会找不到test方法的,因为在编译期,就确保了一定要有test方法,如果还是不理解就看前面的几句话)。现在我用一句话总结一下:编译看申明,运行看实际指向的对象,没找到方法就向上转型,一直找到为止
呵呵,我就是这样理解的了,可能说的有些乱,希望对某些新手能有一点帮助啦,当然,我那里说错了,请大家也给我指出来...
- 对继承的一点点理解,可能不完全正确,还请大家指出错误。
- 自己对springMvc的理解 不对的地方还请指出来
- Android(实习生)第一次面试总结,如有回答错误还请大家指出来哦~
- 写了些JS扩展,有错误请指出,希望对大家有用^^
- 写了些JS扩展,有错误请指出,希望对大家有用^^
- 输出ASCII中的最大值的代码,有错误地方还请指出
- 整理自己所学java基础内容,有错误的请大家指出,相互进步
- 自己对Z-stack的架构一些理解(仅作学习笔记,有错误希望大家能指出来,初学Z-Stack菜鸟一只)
- 贴python毕业设计代码 请大家指出存在的缺点
- C#+三层+会员管理系统源码供大家学习参考,有不足之处还请指出
- 关于QTreeView和QStandardModel联合理解,外加显示委托的理解(学习笔记,如有错误还望指出)
- 对VC坐标系的初步理解(如有错误欢迎指出)
- 对jsp的一点点理解
- 对指针的一点点理解
- 对static的一点点理解
- 对Thrift的一点点理解
- 对Thrift的一点点理解
- 对Dijkstra的一点点理解。
- 2011年考研英语作文闪光点设置
- android 中管理短信
- Linux 开机顺序
- Java连接.Net测试(三)
- yui2 datatable转换至yui3 (3)
- 对继承的一点点理解,可能不完全正确,还请大家指出错误。
- Red Hat Linux分区方案
- setting文件配置
- asp.net中使用eWebEdit将上传后的图片缩小
- NDK入门、提高和实战
- 必须掌握的八个DOS命令(转载
- 用Parsley实现Flex Ioc的简单例子
- 插入多条记录_sql2005.cs中写sql
- dll类库aspx头部引用