这些东西都是我看了许多名师课程和自己研究的成果,严禁转载,这里指出了如何正确的自己定义一个异常类并看一看sun写的java的源代码
话题一:子类的构造器执行是否一定会伴随着父类的构造执行?

1.this()与super()不能共存

2.如果不显示地调用this()和super();子类对象的创建是否一定执行父类的构造

3.既然super()和this()不能共存,又说子类的构造执行一定会执行父类的构造,那么我让子类的构造执行this()是不是就不能在执行父类的构造?

4.如果我非不让父类的构造执行,我通过子类无参的去调用有参的this(int age);然后有参的去调用无参的this()现在系统就无法调用
super()了吧但是!!!直接报错

总结子类的构造只要被执行,一定伴随着父类的构造的执行

话题二:为什么要设计子类的构造一定伴随父类的被动构造执行

1.首先,我们回到构造的定义:创建对象,并给类成员初始提供手段这就是构造的作用。那么子类调用父类构造有什么作用?
答案:子类中包含从父类中继承的成员,我们这里就理解为每一个子类对象中,包含一个父类型的对象,我们可以通过super()来给子类中父类型的对象初始化,这可以提高代码的重用。

但是这样意义还是不大啊:我不在乎这点代码片段
那么我举一个实例,如果父类中的成员是私有的,你只能通过super()来给私有的成员赋值,那么为什么要给父类的私有成员赋值成员
这里有一个实例:


可以看到我自己写的一个异常:被编译器抛出来了。并用抛出的写的错误提示,显示MyException(我写的)从它的父类Exception(系统写的)中继承了
这个字段,用于存放”年龄非法“这个字符串,但是它在父类中是私有的,你只能通过这个方法来给它赋值


显然你给的错误提示根本没有被编译器抛出。具体,要看java写的源代码
显然只有对父类中的那个私有的字段赋值,你写的一个参的异常类构造才有意义
首先我们只看父类的一个参数的构造(因为我只调用了它),进入Exception只找一个参数的构造

可见Exception又调用了它父类的构造

没有在调用super();了所以已经到顶层了,显然你写了那个”年龄非法“最后存到detaiLMessage中去了。
看一下它的定义
果然是私有的,父类中私有的东西子类无法直接访问,显然只能通过调用super();java中的Exception自己也是这么做的

最新文章

  1. 域环境下装SQL SERVER的一次惨痛经历
  2. webkit常见问题汇总
  3. 【Lucene4.8教程之四】分析
  4. scala学习-类与对象
  5. 熟练掌握HDFS的Java API接口访问
  6. c# 流程控制
  7. 对DataTable(或者DataSet)修改后,提交修改到数据库
  8. Spring的注解@Qualifier小结
  9. bzoj2253 纸箱堆叠
  10. django模板语法
  11. [转] 浅谈session,cookie,sessionStorage,localStorage的区别及应用场景
  12. ORA-02275: 此表中已经存在这样的引用约束条件
  13. 关于在WP8.1中使用剪贴板的问题
  14. 生成ansible-playbook的yaml文件的代码(字典排序问题无法解决)
  15. Sticks POJ - 1011 少林神棍 dfs四次剪枝
  16. CCCC L2-013. 红色警报 连通分量
  17. linux系统挂载ISO文件
  18. The remote end hung up unexpectedly
  19. Codeforces Round #239 (Div. 1) 二项式差分
  20. oracle 11G 导出空表失败的解决方法

热门文章

  1. unity shader 内置变量
  2. maven工程编译成jar包
  3. extjs控制器调用其他视图的函数实现控件赋值。
  4. Linux驱动 - SPI驱动 之四 SPI数据传输的队列化
  5. 四川第七届 D Vertex Cover(二分图最小点覆盖,二分匹配模板)
  6. 五颜六色的记事本 Notepad2.cn
  7. 第五章 JVM调优(待续)
  8. web.config中namespace的配置(针对页面中引用)
  9. When install ”matplotlib” with ”pip”, if you get the following error, it means the “freetype” and “png” libraries needed by matplotlib are not installed:
  10. iOS 给Main.storyboard 添加button 事件《转》