zoukankan      html  css  js  c++  java
  • 代码验证继承代码实例

     这些东西都是我看了许多名师课程和自己研究的成果,严禁转载,这里指出了如何正确的自己定义一个异常类并看一看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自己也是这么做的

  • 相关阅读:
    OC,iOS浮点型数据的计算不正确问题
    Swift中AVFoundation的简单使用
    一款经典的stick footer布局
    swift获取当前活动的viewcontroller
    xib的NSLayoutConstraint是否有效
    bootstrap的quartz定时任务简单使用
    Python实现:某个用户登录后,查看自己拥有所有权限
    ftp作业
    实现计算器
    面向对象作业——校园管理系统
  • 原文地址:https://www.cnblogs.com/chaeyeon/p/6164939.html
Copyright © 2011-2022 走看看