当前位置: 首页 > 编程日记 > 正文

Java中父类构造方法对子类构造方法的影响(不是一句话可以说清的)

推荐的阅读顺序是:先看Test类,再根据提示看父类和子类
让我们通过代码来了解一下:

创建一个父类:

public class Father{public Father(){super();//默认调用Object构造方法(Object是所有类的父类)System.out.println("父类构造方法");//写此行代码为了便于证实下面的第3点,Son类中的也是}public Father(String name){System.out.println("Lucy");}
}

创建一个子类:

public class Son extends Father{public Son(){super();  //最后将此处的super();改为this("");用来调用下面的有参构造方法System.out.println("子类构造方法");}public Son(String name){super(name); //此处调用Father类中的有参构造方法}
}

创建一个Test类来调用父类子类中的构造方法 :

public class Test{public static void main(String[] args) {//1、一个类中如果没有定义构造方法,默认有一个无参构造方法,其结构如下:/*public 类名(){super();//此行代码必须放在有效代码第一行,用来调用父类的无参构造方法//请注意,该无参构造方法是默认的,即一个“类”中如果没有“有参构造方法”,则默认有一个“无参构造方法”,//即使没有显现出来,也默认有}*///例如:请看Father类的2~5行和Son类的2~5行,即为默认的无参构造方法//2、通过this([参数列表])调用本类中的构造方法,但必须放在有效代码的第一行,//  所以一个构造方法已经调用了本类中的构造方法,就不能再直接调用父类中的构造方法//3、如果子类构造方法没有调用本类中的构造方法,也没有指定调用父类中的哪个构造方法,//   则默认调用父类中的无参构造方法/*例如:在父类中创建一个有参构造方法,请看父类6~8行*///此时new Son();//调用Son类中的“无参构造方法”/*又因为Son类中的“无参构造方法”默认调用父类中的“无参构造方法”(即使Son类中的无参构造方法中没有super();也默认有)因此此处输出的结果就是:父类构造方法子类构造方法*///4、如果父类没有无参构造方法(无论是显式的还是隐式的)则要求子类构造方法必须直接或间接//   指定调用父类中的某个有参构造方法,且需放在有效代码第一行	//例如:请看Son类中的有参构造方法//此时若:new Son("");//调用Son类中的有参构造方法//则输出的结果就是://Lucy	/*假如把Son类中的无参构造方法里的“super()”改为“this("")”则this("")调用的是本类(Son类)中的有参构造方法,因此输出的结果就是:Lucy子类构造方法*/}
}

相关文章:

ORB_SLAM2概述

追踪线程 灰度化处理。构建当前帧(提取每幅图像的特征点,并分配到网格中,这会极大的方便某一领域内的特征点的查找与匹配)。单目相机初始化操作:通过特征点匹配,使用RANSACDLC计算H矩阵,并根据…

源同步方法与注意事项

2021年的信息安全攻防演练比2020年来的稍早了一些,还是一样的配方,还是一样的味道。检查单位的YUM源,发现没有CentOS 7.9的,排查后发现原来是中科大的rsync同步地址放生了变化,导致源同步失败。改一下地址就好&#xf…

Android开发教程 - 使用Data Binding(二)集成与配置

本系列目录 使用Data Binding(一)介绍使用Data Binding(二)集成与配置使用Data Binding(三)在Activity中的使用使用Data Binding(四)在Fragment中的使用使用Data Binding&#xff08…

Java封装(速读版)

封装就是使用公共方法对私有成员变量进行操作(赋值或获取),这样做可以防止该类的代码和数据被其他类 定义的代码随意访问,有助于数据的安全。–我们可以通过修改成员变量的属性(一般为private),…

C# 创建压缩文件

出处:http://www.cnblogs.com/sparkdev/ 在程序中对文件进行压缩解压缩是很重要的功能,不仅能减小文件的体积,还能对文件起到保护作用。如果是生成用户可以下载的文件,还可以极大的减少网络流量并提升下载速度。最近在一个 C# 项目…

Windows自带certutil工具校验用法

windows自带校验工具certutil&#xff0c;记录用法如下。 certutil -hashfile <file> MD5 certutil -hashfile <file> SHA1 certutil -hashfile <file> SHA256 注意MD5、SHA1、SHA256必须是大写的&#xff01;否则报错&#xff01; C:\Users\Lenovo\Downl…

C++数组名做函数形参/指针

数组名做函数形参 数组未开辟空间时 #include <iostream> using namespace std; void test(int* a) {*a 0;*(a1) 1;*(a2) 2;cout<<a[0]<<a[1]<<a[2]<<endl;return; } int main(int argc,char* argv[]) {int* a;test(a);cout<<a[0]<…

String创建方式及其区别(快速了解)

让我们来看两种赋值方式&#xff1a; 第一种&#xff1a;直接赋值 String name1 "Tom"; String name2 "Tom"; System.out.println(name1 name2);//用来判断name1和name2的地址是否相同&#xff0c;相同为true&#xff0c;不同为false //此时打印的结果…

npm 常用命令详解

本文以Windows平台上做测试&#xff0c;以gulp为示例做教程&#xff0c;出自作者白树&#xff0c;转载请声明&#xff01; 目录 npm是什么npm install 安装模块npm uninstall 卸载模块npm update 更新模块npm outdated 检查模块是否已经过时npm ls 查看安装的模块npm init 在项…

linux Mysql 安装

一、wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm二、sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm三、yum install -y mysql-server mysql mysql-devel四、systemctl start mysqld.service 五、systemctl status mysqld.service六、mysq…

==和equals()的作用及区别

""的作用是比较两个变量是否相等。 当变量是基本数据类型时&#xff0c;比较的是值是否相等的&#xff1a;相等返回true&#xff0c;不等返回false&#xff1a; double a 100.0;int b 100;System.out.println(ab);//输出结果为&#xff1a;true当变量是引用类型时…

np.dot()运算准则

数组*数组 直接点乘。 数组*多维 数组有3个元素的话&#xff0c;用(3,)表示 二维矩阵3*3用&#xff08;3,3&#xff09;表示 &#xff08;3,3&#xff09; * &#xff08;3,&#xff09;结果为&#xff08;3,&#xff09;&#xff0c;即包含3个元素的一维向量 https://blog.…

用createrepo命令创建自己的yum源

观察一下使用的各大开源软件镜像站的yum源&#xff0c;思考他们是怎么创建的呢&#xff1f;我们自己能否创建呢&#xff1f;当然能。 1、安装web服务&#xff0c;本例选择nginx。配置过程不多说&#xff0c;本例选择的根目录是/var/repos&#xff0c;添加三个选项可以看到包的…

String创建对象的个数 StringBuffer

String name1 "Tom"; //创建了一个String类型的对象 String name2 "Lu""cy"; //创建了一个String类型的对象&#xff08;先拼接后创建对象&#xff0c;所以是一个&#xff09;String str "Ja"; String name3 str "m…

第5次作业+105032014166+张珍珍

测试链接&#xff1a;http://www.cnblogs.com/wxcclub/p/6792634.html 一、被测项目界面。 二、测试用例设计表 1.等价类 等价类划分法 输入及外部条件 有效等价类 等价类编号 无效等价类 等价类编号 日期类型 数字 1 非数字 8 年 1912≤year≤2050 2 year<19…

C++ new

C中利用new操作符在堆区开辟数据 堆区开辟的数据&#xff0c;由程序员手动开辟&#xff0c;手动释放&#xff0c;释放利用操作符 delete 语法&#xff1a;new 数据类型 利用new创建的数据&#xff0c;会返回该数据对应的类型的指针 开辟单个内存 语法&#xff1a;new 数据类型…

漫画:禅道程序员的一天

更多精彩欢迎关注《海边的程序员》 转载于:https://www.cnblogs.com/xiaobai007/p/9797462.html

HA01-集群介绍

目录 一、宏观理解集群 二、微观理解集群 三、安装高可用集群环境 3.1、实验环境简介 3.2、安装集群软件并配置集群 3.3、用命令行创建集群 一、宏观理解集群 集群中的一个服务器称为一个节点node。 集群资源以mysql为例一般有&#xff1a;vip&#xff08;浮动IP&#…

Python并行编程(八):with语法

1、基本概念 当有两个相关的操作需要在一部分代码块前后分别执行的时候&#xff0c;可以使用with语法自动完成。同时&#xff0c;使用with语法可以在特定的地方分配和释放资源&#xff0c;因此&#xff0c;with语法也叫作"上下文管理器"。在threading模快中&#xff…

“抽象类”的定义及其与“普通类”的区别

我们都知道在多态中子类要重写父类的方法&#xff0c;执行时也执行子类中的方法&#xff0c;这就显得父类中的方法体有点子虚乌有了&#xff0c; 也就是说可以直接省略方法体&#xff0c;而只定义一个方法就可以了。因此&#xff0c;我们称一个没有方法体的方法为抽象方法&…

refreshcontrol 实现下拉刷新的功能

该组件实现下拉刷新的功能。不过该组件是用在ScrollView的内部的&#xff0c;为ScrollView添加一个下拉刷新的功能。当ScrollView的垂直方向的偏移量scrollY:0的时候&#xff0c;手指往下拖拽ScrollView就会触发onRefresh事件方法。 相关的属性&#xff1a; onRefresh functio…

C++二维数组名与数组指针的思考

二维数组名和数组指针可以当做一个东西用&#xff0c;但两者之间的含义是不同的。 二维数组名是一个指向数组中所有元素的指针&#xff0c;而数组指针是一个行指针。体现在sizeof()上的不同。 #include <iostream> using namespace std; int main() {// a是一个二维数组…

HA03-fence设置

目录 一、fence作用 二、在集群里添加fence 2.1、fence和node之间的通信 2.2、配置fence 2.3、node上安装fence代理 2.4、在集群中添加fence 2.5、fence动作 一、fence作用 HA01理解集群那篇文章中讲过&#xff0c;当集群中某个node出现故障&#xff0c;各个node争抢集…

springboot整合Quartz实现动态配置定时任务

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请注明出处。 https://blog.csdn.net/liuchuanhong1/article/details/60873295前言 在我们日常的开发中&#xff0c;很多时候&#xff0c;定时任务都不是写死的&#xff0c;而是写到数据库中&#xff0c;从而实现定时任…

SQLserver 常用函数适用方法(转载)

SQL Server 常用函数使用方法(持续更新) 之前就想要把一些 SQL 的常用函数记录下来&#xff0c;不过一直没有实行。。。嘿嘿。。。 直到今天用到substring()这个函数&#xff0c;C# 里面这个方法起始值是 0&#xff0c;而 SQL 里面起始值是 1。傻傻分不清楚。。。 这篇博客作为…

“接口”的定义及其与“抽象类”的区别

我们知道一个有抽象方法的类是抽象类&#xff0c;而当一个类中全是抽象方法时&#xff0c;就可以定义为接口&#xff08;interface&#xff09; 接口命名通常以“I”开头&#xff1b;接口中的方法默认有public abstract&#xff08;所以可以省略&#xff09;&#xff1b;接口中…

Linux13-计划任务crontab

目录 一、用户计划任务 1.1、定义用户计划任务的命令crontab 1.2、作业格式 二、系统计划任务cron 三、管理临时文件 3.1、systemd-tmpfiles命令与配置文件 3.2、用法举例 一、用户计划任务 1.1、定义用户计划任务的命令crontab Linux提供了针对周期性作业的crond守护…

Java线程安全 关于原子性与volatile的试验

1. 变量递增试验 1 static /*volatile*/ int shared0;//volatile也无法保证操作的原子性2 static synchronized int incrShared(){//不加synchronized的话&#xff0c;shared最终结果值小于预期3 return shared;4 }5 public static void testIncrShare…

Python学习 day01打卡

1.Python : 是一门解释型 弱类型 高级开发编程语言. 2.第一个Python程序的编写: print ("hell,world") 3.变量:把程序运行过程中的值储存起来,方便后面的程序调用. 4.变量的命名要求: 1,只能是数字或字母或下划线组成; 2,不能是数字开头,也不能全是数字; 3,不能是Pyt…

Window10安装pycocotools

之前在linux系统下安装pycocotools时非常简单&#xff0c;只需&#xff1a; pip install pycocotools 如果在windows下通过以上指令安装会报错&#xff0c;网上查询后都说需要安装C编译器或者VS环境&#xff0c;等等&#xff0c;其实没必要那么麻烦&#xff0c;直接通过一下指令…