继承中的一些构造函数问题。

this(); 代表本类的构造函数

super(); 代表父类的构造函数。

在子类的构造函数中的第一行默认的包含super();隐式语句

但如果父类中有其他的非空参的构造函数而没有空参的构造函数,在子类的构造函数中第一行如果没有去调用父类的非空参构造函数,则会在编译时报错。因为子类中所有的构造函数默认都会访问父类中的空参构造函数。

例:

class Fu

{

       Fu(){

              System.out.println(“Fu…..run”);

}

}

class Zi extends Fu

{

       Zi(){

              Super();//隐式语句

              System.out.println(“Zi......run”);

}

}

如果父类中不写构造函数的话,即存在一个隐式的空参的构造函数。

子类为什么要访问父类的构造函数?

因为子类在继承了父类的内容(属性)时,在使用之前必须知道父类是如何进行初始化的(如果没有显式的初始化,则,数值类型为0,boolean行为false,String 为 null)。所以必须调用父类的构造函数。

this(); 和 super();只能出现在子类构造函数的第一行。故二者只能有其一。

如果子类其中的某一构造函数的第一行使用了this调用了其他的子类构造函数。则在此构造函数中不会访问父类的构造函数。

子父类中的成员变量不存在继承覆盖。

在本类中,成员变量和局部变量同名用this 区分。

在子父类中,成员变量同名用super区分。

this 代表一个本类对象的引用。

Super 代表一个父类空间

子类不能直接访问父类中的私有成员

子父类中的成员函数同名,成为子类函数覆盖父类函数

函数的两个特性

1, 重载:发生在同一个类中。(函数名相同,形参不同)

2, 覆写:发生在子父类中。子父类函数一模一样(返回类型,函数名,形参都相同)

 

覆盖的注意事项:

1, 子类方法的权限必须大于或等于父类函数的权限。

2, 静态只能覆盖静态,或被静态覆盖。

final  最终修饰符

可以修饰类,方法,变量。

1, 当修饰类时,该类表示最终类,不能被其他类所继承。

2, 当修饰方法时,该方法不能被覆盖。

3, 当修饰变量时,该变量不能被修改。

public staticfinal double PI =3.1415; 全局常量

子类成员变量在new过程中值变化过程

首先通过子类构造函数的第一行的隐式supe();语句访问父类构造函数。在此时子类的成员变量都是默认值(数值类的为0,boolean类型的 为false,String类型的为null而不是“”)。

当调用父类构造函数结束后,则显示初始化成员变量。

再接着是按照子类构造函数的方式初始化成员变量。

例:

package ExtendsDemo;class Fu
{int num ;Fu(){System.out.println("----------------------Fu show  start------------------------");show();     System.out.println("----------------------Fu show  end----------------------------");}void show() {System.out.println("fu show  run...");}
}class Zi extends Fu
{int num = 8;String s = "子类显示初始化!";boolean b = true;Zi(){
//      super();隐式调用        在调用父类构造函数时还未对子类成员变量进行显式初始化。故此时num = 0//等super方法执行完之后才对子类成员变量进行初始化。此时num = 8//等显式初始化之后show();System.out.println("Zi 显示初始化 end.....");System.out.println("--------------------最后进行构造函数的初始化----------------------------------------");num = 9;s = "子类构造方法初始化!";b = false;}void show(){   System.out.println("zi show run ..."+num+"----"+s+",,,,,,"+b);}
}public class ExtendsDemo1 {/*** @param args*/public static void main(String[] args) {
//      new Zi();Zi z = new Zi();z.show();}
}

运行结果:

----------------------Fu show  start------------------------
zi show run ...0----null,,,,,,false
----------------------Fu show  end----------------------------
zi show run ...8----子类显示初始化!,,,,,,true
Zi 显示初始化 end.....
--------------------最后进行构造函数的初始化----------------------------------------
zi show run ...9----子类构造方法初始化!,,,,,,false

java extends 继承的一些小结。相关推荐

  1. Java关键字详解this、private、static、super、extends继承、instanceof、final、abstract、interface、implements、enum...

    1,this //在方法中出现了局部变量和成员变量同名的时候,可以在成员变量名前面加上this.来区别成员变量和局部变量. //1.在构造调用另一个构造函数,调用动作必须置于最起始的位置,即this( ...

  2. C++和Java中类继承同名函数的区分

    C++和Java的派生类对于与基类同名的函数有着不同的处理方式. 在C++中,假设基类中有一个dis()函数,而派生类又定义了一个dis()函数,这时候在派生类对象中会将基类的dis()函数屏蔽掉,上 ...

  3. java 封装 继承 堕胎_Java的继承、封装和多态

    一.继承 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为. 继承的特性 子类拥有父类非 private 的属性.方法. ...

  4. java 子类 复制_关于java子类继承来的属性与方法究竟是完全复制还是共用使用...

    关于java子类继承来的属性与方法究竟是完全复制还是共用使用 关于java子类继承来的属性与方法究竟是完全复制还是共用使用 今天在学习java的面向对象时,无意间发现一个问题. public clas ...

  5. [转载] Java之继承

    参考链接: Java多重继承 Java之继承 继承是面向对象程序的一个基本特征,通过继承可以实现父子关系,以及代码的复用.通过继承实现的类称为子类,被继承的类称为父类,所有直接或间接被继承的类都称为父 ...

  6. java类继承语法_java类的继承(基础)

    ---恢复内容开始--- 这篇随笔和大家讲讲java中类的继承是什么?希望对你们有所帮助. 目录 一.java继承是什么? 二.为什么使用java继承 三.java继承的实现 1.1  java继承的 ...

  7. java的继承实例_java继承(实例讲解一)

    Java继承(Java inheritance) Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类.这种技术使 ...

  8. Java中继承、this关键字、super关键字

    继承: 概述:当多个类中存在相同属性和行为时,将这些相同的内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承抽离出来的这个类即可. 子类:当某个类继承了另一个类的时候,可以把这个某类 ...

  9. 设计模式(二)--里氏替换原则(Java的继承规范)

    昨天有说到单一职责原则是针对接口的思维拓展,有没看过的,可以看看!https://blog.csdn.net/newlifemain/article/details/100184642 今天我们来看看 ...

最新文章

  1. 一档博士40万年薪+70万房补!引进224人!​这所大学2021年公开招聘专任教师公告...
  2. Lisp和前缀表示法入门
  3. PAT甲级 -- 1005 Spell It Right (20 分)
  4. 1月28日云栖精选夜读 | 终于等到你!阿里正式向 Apache Flink 贡献 Blink 源码
  5. 《Java8实战》笔记(11):CompletableFuture-组合式异步编程
  6. MaxCompute 挑战使用SQL进行序列数据处理
  7. 测试基础-07-测试报告编写
  8. 使用JSON数据报错和方法
  9. 编译原理第三版陈火旺第二章答案
  10. 【libmodbus-vs2019】测试使用
  11. 如何在服务器里面新建文件夹,怎么在云服务器新建文件夹
  12. excel换行快捷键_13个excel快捷键,学会他们,让你的1秒钟,抵得上同事的5分钟...
  13. P1938 [USACO09NOV]Job Hunt S(spfa,队列+邻接表优化)
  14. Linux Cannot assign requested address
  15. 成熟男人与24岁女孩精彩对白 —非常感动
  16. rtmp断线重连_rtsp转rtmp rtsp2rtmp 同时16路视频 rtmp推流器 支持ipc dvr nvr
  17. java读取qq邮箱_通过java给qq邮箱发送信息
  18. JavaSE(二)-抽象类
  19. 3分钟教你图解Bitmap编码传输
  20. java jbutton 禁用_为什么JButton不能禁用,大侠们进来看看

热门文章

  1. C# Weifenluo教程
  2. mysql 数据恢复 报错_Mysql 数据恢复报错
  3. windows server 2012 磁盘整理功能 试用 chkdsk
  4. 认识:人工智能AI 机器学习 ML 深度学习DL
  5. crontab实现每秒执行
  6. visual studio code更新
  7. Matlab定义符号函数(ZZ)
  8. DSS流媒体服务器搭建
  9. xyntservice
  10. 黄聪:bootstrap中模态框modal在苹果手机上会失效