关于继承的知识盲点
2016-09-24 11:20
148 查看
第一种情况:
父类一个正常的bean结构,子类只设置了var字段没有对应的get方法,然而控制台的输出结果是5.
这说明,当父类和子类拥有相同名称的字段时(其实父类的是属性,子类是字段),调用父类对应的get方法,获得的是父类的成员变量而不是子类的。造成这种误解的原因是经常性不使用this,super关键字,久而久之忽略了其中的细节。
第二种情况:
关于这种情况,类似的还有当内部类的父类和外部类有名称相同的方法时是先调用外部类的方法还是父类的,以前我看过相关的blog,写得很详细,结果百度了一阵子也没搜出来,以后有时间会继续整理,也欢迎大家补充下
public class B{ private int var = 5; public int getVar() { return var; } public void setVar(int var) { this.var = var; } B(){ } }
<pre name="code" class="java">public class Bson extends B{
<span style="white-space:pre"> </span>private int var = 33; Bson(){ System.out.println(getVar()); } public static void main(String[] args) { new Bson(); } }
父类一个正常的bean结构,子类只设置了var字段没有对应的get方法,然而控制台的输出结果是5.
这说明,当父类和子类拥有相同名称的字段时(其实父类的是属性,子类是字段),调用父类对应的get方法,获得的是父类的成员变量而不是子类的。造成这种误解的原因是经常性不使用this,super关键字,久而久之忽略了其中的细节。
第二种情况:
public class B{ private int var = 5; public int getVar() { return var; } public void setVar(int var) { this.var = var; } B(){ } }
<pre name="code" class="java">public class Bson extends B{ private int var = 33; public int getVar() { return var; } public void setVar(int var) { this.var = var; } Bson(){ System.out.println(getVar()); } public static void main(String[] args) { new Bson(); } }输出结果是33,这很容易理解,子类调用了自己的get方法获得了自己的变量。
关于这种情况,类似的还有当内部类的父类和外部类有名称相同的方法时是先调用外部类的方法还是父类的,以前我看过相关的blog,写得很详细,结果百度了一阵子也没搜出来,以后有时间会继续整理,也欢迎大家补充下
相关文章推荐
- 关于继承的基本知识
- 关于继承的一些知识
- 关于继承和覆盖(Override)的一些基础知识
- 关于C++程序设计的基础核心之二:继承与派生的基本知识
- 基础知识总结:关于继承
- 关于Java中的继承,包括重写、构造器、访问权限、构造过程等知识总结
- 笔记 - JS易忘基础知识(二)(关于对象和继承)
- 5.C++:关于C++继承基本知识
- 关于继承中构造方法的知识
- 关于继承和覆盖(Override)的一些基础知识
- Javascript基础知识盲点总结——继承
- Javascript基础知识盲点总结——继承
- CPP基础知识—关于菱形继承
- 关于jxl的一点知识
- 转载:关于linux图形界面的基本知识
- 关于OPC(Ole for process control)服务器开发需要的知识
- 关于句柄的基础知识
- 关于C++准备知识
- 每一个软件开发人员绝对必须掌握的关于 Unicode 和字符集的最基础的知识
- GeoGraphics文档中关于坐标系统的一些知识