知识点;
1、生成子类的过程
2、使用super调用父类构造函数的方法

首先编写3个文件。

Person.java

class Person{
String name;
int age;
Person(){
System.out.println("None");
}
Person(String name,int age){
this.name = name;
this.age = age; System.out.println("Name: " + this.name + " Age:" +this.age);
} void eat(){
System.out.println("eating");
}
}

  

Student.java:

class Student extends Person{
Student(){
System.out.println("i am students!");
}
}

  

Test.java:

public class Test{
public static void main(String[] args){
Student li = new Student();
}
}

  

编译运行结果是:

PS C:\Users\admin\Desktop\java_code\练习六> javac .\Test.java
PS C:\Users\admin\Desktop\java_code\练习六> java Test
None
i am students!

  

为什么运行的结果是这样呢?

在子类的构造函数当中,必须调用父类的构造函数。
如果没有的话,编译器会自动加上super,super会调用父类的构造函数:

super();

那为什么要"在子类的构造函数当中,必须调用父类的构造函数"?

可以减少重复代码。

请看下面的例子:

Person.java:

class Person{
String name;
int age;
Person(){
System.out.println("None");
}
Person(String name,int age){
this.name = name;
this.age = age; } void eat(){
System.out.println("eating");
}
}

  

如果按照以前的方式写,代码会是这样的,可以发现Stduent和Person类中有重复的代码。

Student.java:

class Student extends Person{
int grade;
Student(){
System.out.println("i am students!");
}
Student(String name,int age,int grade){
this.name = name;
this.age = age;
this.grade = grade; }
}

  

修改后Student.java:

class Student extends Person{
int grade;
Student(){
System.out.println("i am students!");
}
Student(String name,int age,int grade){
super(name,age);
this.grade = grade; }
}

  

Test.java:

public class Test{
public static void main(String[] args){
Student li = new Student("liming",18,90);
System.out.println(li.name);
System.out.println(li.age);
System.out.println(li.grade);
}
}

  

编译后输出:

PS C:\Users\admin\Desktop\java_code\练习六> java Test
liming
18
90

  

因此super与this调用构造函数类似,this()为空的时候调用同类无参数的构造函数,因此super会调用父类无参数的构造函数。

  • this()调用本类当中的构造函数
  • this. 调用本类中的成员变量
  • super() 调用父类当中的构造函数
  • super. 调用父类中的成员变量

最新文章

  1. 图片在保存的时候===》出现这个异常:GDI+ 中发生一般性错误
  2. VS code 安装react-native代码提醒
  3. PE-1 & 暴模|容斥
  4. Python学习路程day12
  5. 南阳理工ACM1076--方案数量
  6. JavaScript中国象棋程序(6) - 克服水平线效应、检查重复局面
  7. eclipse tomcat add时提示The Tomcat server configuration at \Servers\Tomcat v6.0 Server at localhost-
  8. 基于python自动化测试平台与虚拟化技术结合的思考
  9. C语言字符串的常见特殊操作(除了string.c实现的那些接口)
  10. 关于bash
  11. springcloud情操陶冶-bootstrapContext(二)
  12. vue中v-text / v-html
  13. Elasticsearch学习笔记(九)partial update
  14. webpack 4.X 基础编译
  15. Butterknife--Android Butterknife使用方法总结(转)
  16. Html 标签初知
  17. python:数据类型list
  18. HDU1285 确定比赛问题【拓扑排序+优先队列】
  19. 11.15java课后作业
  20. web 分享代码片段

热门文章

  1. 最新NetSarang Xmanager安装激活-XShell、XFtp
  2. Django内置的中间件
  3. JS获取样式
  4. 开始自学JAVA了,找到一点有用的资料(不定时更新)
  5. 爬虫爱用的一些python技巧
  6. 分析器错误消息: Reference.svcmap:未能加载文件
  7. HTML表单处理
  8. matlab中的数组与矩阵
  9. R parallel包学习笔记2
  10. ASP.NET Identity-验证与授权及管道事件