这些东西都是我看了许多名师课程和自己研究的成果,严禁转载,这里指出了如何正确的自己定义一个异常类并看一看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. BZOJ4195:[NOI2015]程序自动分析

    浅谈并查集:https://www.cnblogs.com/AKMer/p/10360090.html 题目传送门:https://lydsy.com/JudgeOnline/problem.php? ...

  2. Visualforce入门第一篇_2017.3.1

    什么是Visualforce??   Visualforce是Forcce.com平台上的试图控制技术,结构与标记与HTML非常相似.Visualforce页面可以显示从数据库或者Web服务器得到的数 ...

  3. RuPengWang项目

    项目 Day1------------------------- 说明:建外键约束.ashx+Razor RupengWang创建三个类库Model DAL BLL后台:RupengWang.Admi ...

  4. AJAX,jQuery Ajax和Deferred

    AJAX全称为“Asynchronous JavaScript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用,改善用户体验,实现无刷新效果的技术. 使用AJAX的优 ...

  5. 使用script转储终端命令输出,或者录制并播放session的内容

    摘自:http://leohot.blog.163.com/blog/static/1348656022012729113658473/ 注意: 1. 启动script时没有指定文件名,它会自动记录到 ...

  6. django的settings.py设置static

    DEBUG = True ################ STATICFILES ################ # A list of locations of additional stati ...

  7. 使用matplotlib的示例:调整字体-设置刻度、坐标、colormap和colorbar等

    使用matplotlib的示例:调整字体-设置刻度.坐标.colormap和colorbar等 2013-08-09 19:04 27805人阅读 评论(1) 收藏 举报  分类: Python(71 ...

  8. LNMP 1.1 php编译安装

    LNMP 是 Linux nginx mysql php  nginx和apache一样也是一种web服务.在静态web服务中nginx更胜一筹.在动态中不比apache有优势. LNMP的mysql ...

  9. LAMP 2.6 Apache 禁止指定user_agent

    user_agent 我把它叫做浏览器标识, 目前主流的浏览器有 IE. chrome. Firefox. 360. iphone上的 Safari.Android 手机上的.百度搜索引擎.googl ...

  10. java中常用的时间操作

    最近项目设计时间的转换和计算,长时间没用时间操作了,感觉手有点生,所以在这里记录一下: Date 常用的方法: getTime() .setTime(): SimpleDateFormate 常用的方 ...