子类不继承父类的构造方法,但父类的构造方法对子类构造方法的创建有影响。

具体来说就是:

①.当父类没有无参构造方法时:

1).子类也不能有无参构造方法;

2).且必须在子类构造方法中显式以super(参数)的形式调用父类构造方法;

否则会出现如下的错误:

Implicit super constructor Person() is undefined for default constructor. Must define an explicit constructor

3).子类在有参构造方法中显式调用super(参数)后,如果再写一个无参构造方法,则会出现下面的错误:

Implicit super constructor Person() is undefined. Must explicitly invoke another constructor

②.父类有无参构造方法时:

1).子类可以有无参构造方法;

2).也可以有有参构造方法;在有参构造方法中,可以用super显式调用父类构造方法也可以不调用;

也就是说,这时候,子类在构造方法的创建上是比较自由的。

下面是简单示例:

有两个类,Person类和Student类,Student类继承自Person类。两个类的构造方法详见代码。

Person类:

package human;

public class Person {
String name;
int age;
String gender; private String hobby; public Person() { } public Person(String n, String g) {
this.name = n;
this.gender = g;
} public Person(String n, int a, String g, String h) {
this.name = n;
this.age = a;
this.gender = g;
this.hobby = h;
} public void setName(String n) {
this.name = n;
} public void setAge(int a) {
this.age = a;
} public void setGender(String g) {
this.gender = g;
} public void setHobby(String h) {
this.hobby = h;
} public String getName() {
return this.name;
} public int getAge() {
return this.age;
} public String getGender() {
return this.gender;
} public String getHobby() {
return this.hobby;
} public void informationPrint() {
System.out.println("My name is " +getName());
System.out.println("I am " + getAge() +" years old"); if(getGender() == "female")
System.out.println("I am a girl");
else
if(getGender() == "male")
System.out.println("I am a boy");
else
System.out.println("Something is wrong!");
System.out.println("My hobby is " + hobby);
} }

Student类:

package human;

public class Student extends Person {
String stuNumber;
int score; public Student() { } public Student(String n, String g) {
super(n,g);
} public Student(String n, int a, String g, String h) {
super(n,a,g,h);
} public Student(String sN, int s) {
this.stuNumber = sN;
this.score = s;
} public Student(String n, String g, String sN, int s) {
super(n,g);
this.stuNumber = sN;
this.score = s;
} public Student(String n, int a, String g, String h, String sN, int s) {
super(n,a,g,h);
this.stuNumber = sN;
this.score = s;
} public void setStuNumber(String num) {
this.stuNumber = num;
} public void setScore(int s) {
this.score = s;
} public String getStuNumber() {
return this.stuNumber;
} public int getScore() {
return this.score;
} public void informationPrint() {
super.informationPrint();
System.out.println("My number is " + stuNumber);
System.out.println("My score is " + score);
} }

测试类:

package human;

public class TestMain {

	public static void main(String[] args) {
Person xiaoxiP = new Person("xiaoxiP",29,"female","piano");
Person xiaonanP = new Person("xiaonanP","male");
Student xiaoxiS = new Student("xiaoxiS",28,"female","piano","124",90);
Student xiaonanS = new Student("xiaonanS","male","123",98); xiaoxiP.informationPrint();
xiaoxiS.informationPrint(); xiaonanP.informationPrint();
xiaonanS.informationPrint();
} }

结果:

My name is xiaoxiP
I am 29 years old
I am a girl
My hobby is piano
My name is xiaoxiS
I am 28 years old
I am a girl
My hobby is piano
My number is 124
My score is 90
My name is xiaonanP
I am 0 years old
I am a boy
My hobby is null
My name is xiaonanS
I am 0 years old
I am a boy
My hobby is null
My number is 123
My score is 98

总结(追加):

①.父类没有无参构造方法时,子类也不能有无参构造方法,必须用super显式调用父类构造方法。

②.父类没有无参构造方法且有多个有参构造方法时,子类可以只显式调用父类的一个构造方法;

子类也可以构造多个构造方法,只要保证每个构造方法都显式调用了父类构造方法就可以,对于调用父类哪一个构造方法则没有要求。

③.父类有无参构造方法时,子类可以有无参构造方法,也可以有有参构造方法;

既可以用super显式调用父类构造方法,也可以不用super显式调用。

待学习:访问权限修饰符的问题。

Java学习笔记7---父类构造方法有无参数对子类的影响的更多相关文章

  1. 【Java学习笔记】函数的可变参数

    package p2; public class ParamterDemo { public static void main(String[] args) { int sum1 = add(4,5) ...

  2. Java学习笔记之---构造方法

    Java学习笔记之---构造方法 (一)构造方法的特性 构造方法不能被对象单独调用 构造方法与类同名且没有返回值 构造方法只能在对象实例化的时候被调用 当没有指定构造方法时,系统会自动添加无参的构造方 ...

  3. 0035 Java学习笔记-注解

    什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annot ...

  4. 0025 Java学习笔记-面向对象-final修饰符、不可变类

    final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...

  5. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  6. Java学习笔记4

    Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...

  7. java学习笔记09--反射机制

    java学习笔记09--反射机制 什么是反射: 反射是java语言的一个特性,它允许程序在运行时来进行自我检查并且对内部的成员进行操作.例如它允许一个java的类获取他所有的成员变量和方法并且显示出来 ...

  8. java学习笔记08--泛型

    java学习笔记08--泛型 泛型可以解决数据类型的安全性问题,它主要的原理,是在类声明的时候通过一个标识标识类中某个属性的类型或者是某个方法的返回值及参数类型.这样在类声明或实例化的时候只要指定好需 ...

  9. java学习笔记16--I/O流和文件

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note16.html,转载请注明源地址. IO(Input  Output)流 IO流用来处理 ...

随机推荐

  1. Codeforces Round #313 (Div. 2) C

    题目链接 题意:  有一个六边形,给你6条边的长度(顺时针给出).每条边都是整数,问你它能够被切割成几个单位长度的正三角形  (题目保证给出的数据能够被切割) 思路: 六边形能够被切割成两种情况: ① ...

  2. 向MapReduce转换:生成用户向量

    分两部分: <span style="font-size:18px;">/*** * @author YangXin * @date 2016/2/21 * @ inf ...

  3. 怎样解决jsp:include标签在包括html文件时遇到的乱码问题

    在一个JSP页面中,经常须要包括还有一个文件,JSP为我们提供了jsp:include标签能够完毕这个功能,比方:<jsp:include page="some.jsp"&g ...

  4. 主次设备号 Device Major and Minor Numbers

    对于一个设备文件而言真正重要的标志是它的主次设备号(major and minor device numbers).如果我们用ls命令列出/dev下的一个设备: frank@under:~$ ls - ...

  5. 由一道bash jail题引出的琐事@_@

    关键词:Terminal devices.shell.stdio 题目入口: (需要注册) root@kali:~# ssh level1@24.37.41.154 -p 1016 level1@24 ...

  6. 转:Natas Wargame Level28 Writeup(EBC加密破解)

    From:http://alkalinesecurity.com/blog/ctf-writeups/natas-28-getting-it-wrong/ Now that I knew it was ...

  7. 【python】type()、instance()

    >>> a=520 >>> type(a) <class 'int'> >>> a=' >>> type(a) &l ...

  8. HTML基础教程-标题

    HTML 标题 在 HTML 文档中,标题很重要. HTML 标题 标题(Heading)是通过 <h1> - <h6> 等标签进行定义的. <h1> 定义最大的标 ...

  9. H5之前端操作文件

    js是否能够操作文件? js在HTML5以前浏览器端是无法操作文件的,但HTML5中给a标签增加了一个download属性,只要有这个属性,点击这个链接时浏览器就不在打开链接指向的文件,而是改为下载( ...

  10. 使用Python Shapefile Library创建和编辑Shapefile文件

    介绍 shapefile是GIS中非常重要的一种数据类型,在ArcGIS中被称为要素类(Feature Classes),主要包括点(point).线(polyline)和多边形(polygon).P ...