• 运行 TestInherits.java示例,观察输出,注意总结父类与子类之间构造方法的调用关系修改Parent构造方法的代码,显式调用GrandParent的另一个构造函数,注意这句调用代码是否是第一句,影响重大!

 

1.没有super的调用

 class Grandparent
{ public Grandparent()
{ System.out.println("GrandParent Created."); } public Grandparent(String string)
{ System.out.println("GrandParent Created.String:" + string); } } class Parent extends Grandparent
{ public Parent()
{ //super("Hello.Grandparent."); System.out.println("Parent Created"); // super("Hello.Grandparent."); } } class Child extends Parent
{ public Child()
{ System.out.println("Child Created"); } } public class TestInherits
{ public static void main(String args[])
{ Child c = new Child(); } }

运行结果:

GrandParent Created.
Parent Created
Child Created

2.有super的构造调用,且在第一行。

 class Grandparent
{ public Grandparent()
{ System.out.println("GrandParent Created."); } public Grandparent(String string)
{ System.out.println("GrandParent Created.String:" + string); } } class Parent extends Grandparent
{ public Parent()
{ super("Hello.Grandparent."); System.out.println("Parent Created"); //super("Hello.Grandparent."); } } class Child extends Parent
{ public Child()
{ System.out.println("Child Created"); } } public class TestInherits
{ public static void main(String args[])
{ Child c = new Child(); } }

运行结果:

GrandParent Created.String:Hello.Grandparent.
Parent Created
Child Created

3.super方法在输出语句的后面

 class Grandparent
{ public Grandparent()
{ System.out.println("GrandParent Created."); } public Grandparent(String string)
{ System.out.println("GrandParent Created.String:" + string); } } class Parent extends Grandparent
{ public Parent()
{ //super("Hello.Grandparent."); System.out.println("Parent Created"); super("Hello.Grandparent."); } } class Child extends Parent
{ public Child()
{ System.out.println("Child Created"); } } public class TestInherits
{ public static void main(String args[])
{ Child c = new Child(); } }

程序报错!

结论:

通过super调用基类的构造方法,必须是子类的构造方法中的第一个语句.(顺序不能打乱)

1.以final 开头的class类不允许继承

2.以final声明的方法不允许覆盖

3.以final声明的变量不允许更改

4.利用final,可以设计出一种特殊的“只读”的“不可变类”

最新文章

  1. php中json_decode返回数组或对象
  2. Guava------------Cache使用方法
  3. 【poj3263】 Tallest Cow
  4. 反射型xss绕过IE xss filter
  5. 选择两个字段时distinct位置的影响
  6. 一个朋友js图表开发遇到的问题 解决思路c和js
  7. Linux常用命令--文件的压缩和解压缩
  8. SSL/TLS/WTLS原理
  9. 清除div浮动的三种方式
  10. JSP标准标签库(JSTL)--国际化标签库 fmt
  11. Gradle 1.12用户指南翻译——第三十四章. JaCoCo 插件
  12. [oracle]查询一个表中数据的插入时间
  13. udt的java实现
  14. 【转】STM32 不占用定时器(包括SysTick)实现精确延时(巧用DWT)
  15. 搭建Harbor企业级docker仓库
  16. wonder vscode plugins
  17. [20180118]tstats的问题.txt
  18. python3简单实现微信爬虫
  19. springboot 入门
  20. iOS 在不添加库的情况下 通过抽象类来获取自己想要的方法

热门文章

  1. windows电脑安装python教程
  2. 利用python模拟鼠标点击自动完成工作,提升你的工作效率!
  3. 吴裕雄--天生自然java开发常用类库学习笔记:System类
  4. mybatis-plus 乐观锁
  5. Golang函数-不定参函数
  6. POJ 2305:Basic remains 进制转换
  7. BZOJ 3332
  8. 157-PHP strrchr函数输出最后一次出现字母p的位置到字符串结尾的所有字符串
  9. 在各浏览器和各分辨率下如何让div内的table垂直水平居中?
  10. Flink 复杂事物处理