关于java继承的一些理解错误
来源:互联网 发布:手机网站源码模板 编辑:程序博客网 时间:2024/06/14 21:00
今天在看wifi源码的时候,发现一个自己在java 继承方面知识理解的一些缺陷。在这儿记录一下。
先上代码吧:
这是父类:
public class Father { public String getName(){ Log.d("cxxp","Father getName()"); return getTrueName(); } public String getTrueName(){ Log.d("cxxp","Father getTrueName()"); return null; } public String getResult(){ Log.d("cxxp","Father getResult()"); return getName(); }}
这是子类1
public class Son1 extends Father{ @Override public String getName() { Log.d("cxxp","Son1 getName()"); return "son1"; } @Override public String getTrueName() { Log.d("cxxp","Son1 getTrueName()"); return "son1 is true name"; } public String getMyResult(){ Log.d("cxxp","Son1 getMyResult()"); return getResult(); }}
这是子类2
public class Son2 extends Father{ @Override public String getName() { Log.d("cxxp","Son2 getName()"); return "son2"; } @Override public String getTrueName() { Log.d("cxxp","Son2 getTrueName()"); return "son1 is true name"; } public String getMyResult(){ Log.d("cxxp","Son2 getMyResult()"); return getResult(); }}
这是调用
@Override public void onClick(View view) { switch (view.getId()){ case R.id.bt_son1_getresult: Son1 s1 = new Son1(); tv.setText(s1.getMyResult()); break; case R.id.bt_son2_getresult: Son2 s2 = new Son2(); tv.setText(s2.getMyResult()); break; case R.id.bt_father_getresult: Father father = new Father(); tv.setText(father.getResult()); break; } }
这是 log
//case R.id.bt_son1_getresult:子类1调用 没有重写的方法 getMyResult()10-30 08:41:16.634 2535-2535/com.cxp.dyzc.stringdemo D/cxxp: Son1 getMyResult()10-30 08:41:16.634 2535-2535/com.cxp.dyzc.stringdemo D/cxxp: Father getResult()10-30 08:41:16.634 2535-2535/com.cxp.dyzc.stringdemo D/cxxp: Son1 getName()case R.id.bt_son2_getresult:子类2调用 没有重写的方法 getMyResult()10-30 08:41:20.735 2535-2535/com.cxp.dyzc.stringdemo D/cxxp: Son2 getMyResult()10-30 08:41:20.735 2535-2535/com.cxp.dyzc.stringdemo D/cxxp: Father getResult()10-30 08:41:20.735 2535-2535/com.cxp.dyzc.stringdemo D/cxxp: Son2 getName()case R.id.bt_father_getresult:父类调用 getResult() 方法10-30 08:41:23.652 2535-2535/com.cxp.dyzc.stringdemo D/cxxp: Father getResult()10-30 08:41:23.652 2535-2535/com.cxp.dyzc.stringdemo D/cxxp: Father getName()10-30 08:41:23.652 2535-2535/com.cxp.dyzc.stringdemo D/cxxp: Father getTrueName()
为了便于理解这个场景,再附上一张图:
怎么去理解最终打出的log?
把子类的方法当做子类加上父类的方法即可
子类可以调用父类的方法,但是父类在没有子类对象的情况下无法调用子类的方法。
父类的public方法,子类都会继承
是子类的对象所以要用子类的方法
自己的理解,如果有误,请大神指教,不胜感激。
阅读全文
0 0
- 关于java继承的一些理解错误
- 关于Java学习中继承知识方面的一些理解
- 关于多重继承的一些理解
- 关于JavaScript中的继承的一些理解
- 关于java的一些理解
- java学习中关于继承的理解
- 关于Java继承的一些复习
- 关于继承的理解
- 关于java反射的一些理解
- 关于java包装类的一些理解
- 关于java环境变量的一些理解
- 关于java线程的一些理解
- JAVA关于线程自己的一些理解
- 一些关于Java常用关键字的理解
- 关于java中一些代码的理解
- 关于Java 8 的一些理解
- 关于java synchronized关键字的一些理解
- 关于java中Exception的一些理解
- 使用OLAMI SDK和讯飞语音合成制作一个语音回复的短信小助手
- Android retrofit2 详解
- 序列DP问题
- 字典的一些基础用法
- 51nod 最大M子段和V2【贪心】【链表】【堆】
- 关于java继承的一些理解错误
- 虚拟桌面模拟查找点击自绘控件
- 常见的内存错误及对策
- Vi常用快捷键、文件权限操作、查看文件若干命令
- Python动态导入模块
- [Leetcode] 423. Reconstruct Original Digits from English 解题报告
- Linux安装配置memcache
- .Net面试题
- C