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

类的继承与super()的意义以即如何写一个正确的异常类的更多相关文章

  1. 关于Python中的类普通继承与super函数继承

    关于Python中的类普通继承与super函数继承 1.super只能用于新式类 2.多重继承super可以保公共父类仅被执行一次 一.首先看下普通继承的写法 二.再看看super继承的写法 参考链接 ...

  2. Java面向对象-Java类的继承及super关键字

    Java面向对象-Java类的继承 1,继承定义以及基本使用 定义:子类能够继承父类的属性和方法: 注意点:Java中只支持单继承: 私有方法不能继承: 上代码: package com.java12 ...

  3. python写一个密码生成器的类,要求有个类变量,统计一下一共生成过多少个密码。 要求有4个方法,1:构造方法 2 实例方法 3 类方法 4 静态方法

    生成指定长度的随机数字密码 生成指定长度的随机字母密码 生成指定长度的随机数字和字母的混合 #encoding=utf-8   import random import string class pa ...

  4. Java实验1 - 类的继承(super)- 创建checkaccount继承account

    笔记总结: /** 任务81: 继承性,(降低代码亢余度) * 1.class 子类A Extends 父类B,(private 的内容无法被继承) * 2. 方法可以覆盖(Overrides), 注 ...

  5. day24类的继承

    类的继承1 什么是继承    继承一种新建类的方式,新建的类称之为子类/派生类,被继承的类称之为父类\基类\超类    python中继承的特点:        1. 子类可以遗传/重用父类的属性   ...

  6. Python的程序结构[2] -> 类/Class[1] -> 基类与继承

    基类与继承 / Base Class and Inheritance Class 面向对象的特性使得 Python 中不可避免地需要使用到类和类的继承,类的继承可以使得代码很好的被重用.下面以一些代码 ...

  7. php类的继承(基本概念,访问权限修饰符,重写override)

    类的继承 简单理解: 某个类A具有某些特征,另一个类B,也具有A类的所有特征,并且还可能具有自己的更多的一些特征,此时,我们就可以实现:B类使用A的特征信息并继续添加自己的一些特有特征信息. 基本概念 ...

  8. Python3 面向对象-类的继承与派生

    1.什么是继承? 继承是一种创建新类的方式,新建的类可以继承一个或多个父类(python支持多继承),父类可称为基类或超类,新建的类称为派生类和或子类. 子类会遗传父类的属性,从而解决代码重用问题. ...

  9. Python的类和继承

    一.类的封装: 封装将类的信息隐藏在类内部,不允许外部直接修改该类的变量,只能通过该类提供的方法来实现对隐藏信息的操作和访问 class Boss(): # 类的公共属性 level=1 # 类的初始 ...

随机推荐

  1. [转]【技术心得】Last-Modified,Etag,Expire区别

    Last-Modified 是什么 Last-Modified 是 HttpHeader 中的资源的最后修改时间,如果带有 Last-Modified ,下一次发送 Http 请求时,将会发生带 If ...

  2. DCOS安装

    安装pre-flight master机器会安装上安装文件(同时check条件是否满足要求),其他的agent设备只是check各种条件是否具备. 确保53/2181端口没有被占用:centos7每次 ...

  3. C++动多态和静多态

    动多态的设计思想:对于相关的对象类型,确定它们之间的一个共同功能集,然后在基类中,把这些共同的功能声明为多个公共的虚函数接口.各个子类重写这些虚函数,以完成具体的功能.客户端的代码(操作函数)通过指向 ...

  4. linux 内存释放命令

    我使用的是CentOS 6.5 ,由于卸载Solr 后发现内存占用挺多的,我想释放一下内存,就查阅了一些资料,分享给大家: 1.free -m  查看内存的使用情况,-m表示单位是兆 2.echo 1 ...

  5. uboot - *** Warning - bad CRC, using default environment

    出现这个现象的原因 环境变量存储区没有相应的数据,产生的原因可能是: 1.首次烧写uboot启动,,出现这个提示,执行saveenv 指令保存环境变量即可: 2.nor fash芯片的 基地址出错. ...

  6. (转)C# -- 扩展方法的应用(Extension Methods)

    本文转载自:http://blog.csdn.net/zxz414644665/article/details/9793205 当你有下面这样一个需求的时候,扩展方法就会起到作用:在项目中,类A需要添 ...

  7. java中i/o练习

    总结: FileInputStream fis; int length; while((length=fis.read(b,0,b.length))!=-1){ output.write(b,0,le ...

  8. Dubbo各种协议详解

    (1)协议支持 Dubbo支持多种协议,如下所示: Dubbo协议 Hessian协议 HTTP协议 RMI协议 WebService协议 Thrift协议 Memcached协议 Redis协议 在 ...

  9. MessageBox如何输出整数

    int cx=10;CString s;s.Format(_T("整数是:%d"),cx);MessageBox(s);

  10. WebRTC的拥塞控制技术<转>

    转载地址:http://www.jianshu.com/p/9061b6d0a901 1. 概述 对于共享网络资源的各类应用来说,拥塞控制技术的使用有利于提高带宽利用率,同时也使得终端用户在使用网络时 ...