继承中构造方法访问特点--java 进阶day01
1.子类不可以继承父类的构造方法

构造方法的名称必须与类名一致,上图中类名是Zi,而构造方法名是Fu,肯定不行
2.子类在初始化之前,需要对父类初始化
子类在初始化的过程中,很有可能会调用到父类的数据,如果父类没有提前初始化,子类就无法调用这些数据

3.通过在子类中访问父类的构造方法,从而初始化父类的数据

案例:

1.老师类和学生类中都有姓名和年龄的共性,所以写一个“人”的父类

2.接着写老师类,老师类继承了父类,又因为构造方法无法继承,所以老师类中的构造方法需要自己书写
通过快捷键快速书写子类的构造方法


因为父类中存在一个空参的构造方法和一个带参构造方法,所有系统会询问我们要打印哪种构造方法,直接ctrl+a全选即可

子类继承了父类,共性的变量我们只需要通过父类即可获取到,无需再在子类中写出(Person中有name和age两个变量,而Teacher中没有)
而如何初始化父类中的这些变量就是通过子类的构造方法再加上super()访问父类的构造方法来实现的

创建了老师对象,提供了实参,然后实参传递给形参,形参又传递给super(),super()又传递给父类的构造方法,从而实现了变量的初始化

理解了这一步,后面的就好写了,接着写学生类,学生类多了一个成绩,这就要我们自己单独在学生类中写出

完成了所有变量的初始化后,因为父类中的变量都被私有化,不能直接拿着变量名来使用,但因为子类都已经继承了父类,getName()等方法都可以直接使用,所以我们通过这些方法来打印

我们可以选择使用super.来调用父类中的get方法,但是仔细想想,老师类和学生类都已经继承了Person类,就相当于它们也有一模一样的get方法,那就没必要再通过super.来调用父类的get方法,而可以直接使用get方法

.

如上图,Zi类继承Fu类,就相当于Zi类中已经有了父类的所有成员,可以直接使用
最后,打印结果


继承中构造方法访问特点--java 进阶day01的更多相关文章
- 《java入门第一季》之面向对象面试题(继承中构造方法的关系)
/* 继承中构造方法的关系 A:子类中所有(子类的有参和无参)的构造方法(默认都会访问父类)中(空参数)的构造方法,默认访问父类空参数构造,不默认访问有参数构造 B:为什么呢? 因为子类会继承父类中的 ...
- Java 继承中构造方法的执行顺序问题
在Java中,如果一个类没有任何显式创建的构造器则该类默认会有一个无参构造器:如果显式创建了有参构造器则该类就不再有默认无参构造器. 在Java继承中,构造器并不能被继承,而是被显示或隐式调用. 1. ...
- java的继承中构造方法
构造方法在创建对象的时候是被自动调用的,然后在继承中,是先调用父类的构造方法,然后在调用子类的构造方法, 当构造方法重写之后,在super中添加对应你想要调用构造方法的参数 例:父类 package ...
- python多继承中子类访问祖先类的同名成员
子类调用父类的同名成员 方式1: class A: def f_a(self): print("----A----") class B: def f_a(self): print( ...
- Java多态机制和继承中重写重载
关于Java中多态机制 http://www.cnblogs.com/chenssy/p/3372798.html 这篇博文讲的很透彻 大体意思是 多态定义: 多态就是指程序中定义的引用变量所指向的具 ...
- python 继承中的super
python继承中子类访问父类的方法(包括__init__)主要有两种方法,一种是调用父类的未绑定方法,另一种是使用super(仅仅对于新式类),看下面的两个例子: #coding:utf-8 cla ...
- [Java] 继承中,父类被覆盖的成员变量、方法的可访问性
在 Java 的继承机制里,在子类内部,可以访问父类被覆盖的变量和方法:在子类外部,可以访问父类的被覆盖变量,但是不能访问父类的被覆盖方法. 父类中被覆盖的方法不能在外部被方法,这是出于封装的考虑. ...
- java之继承中的构造方法
继承中的构造方法 1.子类的构造过程中必须调用其基类的构造方法. 2.子类可以在自己的构造方法中使用super(argument_list)调用基类的构造方法. 2.1.使用this(argumen ...
- Java继承中的转型及其内存分配
看书的时候被一段代码能凌乱啦,代码是这样的: package 继承; abstract class People { public String tag = "疯狂Java讲义"; ...
- java学习笔记-继承中super关键字
背景: 在java继承的概念中我们得知,被声明为私有的类成员对所属的类来说仍然是私有的.类之外的任何代码都不能访问,包括子类. super关键字的两种用法: 1.用于调用超类的构造函数: 2.用于访问 ...
随机推荐
- 关于前端上传excell时间的问题
当前端导入excell里的数据时,只能获取到下面类似的这种数据 Excel存储的日期是从1900年1月1日开始按天数来计算的,也就是说1900年1月1日在Excel中是1. 转化的思路和对Excel中 ...
- (六).NET6.0通用读取配置文件功能
1.新增Microsoft.Extensions.Configuration包 在启动项目下,设置appsettings.json属性为始终复制 2.新建一个文件夹Common,用于存放工具类项目.并 ...
- 深入LinkedBlockingQueue实现原理
学习BlockingQueue之LinkedBlockingQueue实现原理 一:概念 LinkedBlockingQueue是一个用链表实现的有界阻塞队列.此队列的默认和最大长度为 Integ ...
- 史上最全JVM面试题和答案
JVM概要介绍 JVM是Java Virtual Machine(Java虚拟机)的缩写. 虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的. Java虚拟机有自己完善的 ...
- 2025-01-18:施咒的最大总伤害。用go语言,一个魔法师掌握了多种不同的咒语,每个咒语对应一个伤害值,这些伤害值存储在数组 power 中,其中可能会有多个咒语具有相同的伤害值。 使用某个特定伤
2025-01-18:施咒的最大总伤害.用go语言,一个魔法师掌握了多种不同的咒语,每个咒语对应一个伤害值,这些伤害值存储在数组 power 中,其中可能会有多个咒语具有相同的伤害值. 使用某个特定伤 ...
- tar基本命令
常用基本命令 压缩文件 # touch a.txt # tar -czvf test.tar.gz a.txt //或 tar -czvf /path/to/file.tar.gz file 列出 ...
- VS中无法识别unistd.h的问题
问题 VS 无法打开源文件 unistd.h 参考:链接 方法 许多在Linux下开发的C程序都需要头文件unistd.h,但VC中没有个头文件,所以用VC编译总是报错.把下面的内容保存为unistd ...
- UTS Open '21 P7 - April Fools
传送门 前言 本题是笔者keysky与同学yangbaich讨论+推式子一整个晚上以及讨论前ybc的一整个下午做出来的,综合起来是 \(34\) 个转移方程,对于整道题来说,贡献大抵为我 \(2\) ...
- linux创建快捷方式
第一方法设置软连接 ln -s test.log test2.log 第二方法 第一步 新建 /usr/share/applications 目录下的某个快捷方式文件 如 touch /usr ...
- Luogu P10581 蓝桥杯2024国A 重复的串 题解 [ 蓝 ] [ KMP ] [ 动态规划 ] [ 矩阵加速 ]
重复的串:KMP + dp 的板子题. 暴力 dp 设计 \(dp_{k,i,j}\) 表示主串匹配到第 \(i\) 位,模式串有 \(j\) 位已匹配完成,目前已完成 \(k\) 次匹配的方案数. ...