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