Super详解
super注意点
-
super调用父类的构造方法,必须在构造方法的第一个
-
-
super和this不能同时调用构造方法!
Vs this
代表的对象不同:
-
this:本身调用者这个对象
-
super:代表父类对象的引用
前提:
-
this:没有继承也可以使用
-
super:只能在继承条件下才可以使用
构造方法
-
this():本类的构造
-
super():父类的构造!
举例
super()必须在第一行,否则会报错
this()也必须在第一行,否则会报错,因此不能和super()同时调用
this()写第一行,super()会报错
无参构造
写了有参构造,无参构造就没了
父类没有无参构造,子类里面没法调用super()
因此子类无参构造也会报错
因此父类必须加一个无参
如果父类想写有参构造,子类可以调用父类的有参构造,不写的话就默认调用无参构造
代码
//Java-零基础学习/src/oop/demo05/Student
package oop.demo05;
//Student is Person :派生类,子类
//子类继承了父类,就会拥有父类的全部方法!
public class Student extends Person {
public Student() {
//隐藏代码:调用了父类的无参构造
super();//调用父类的构造器,必须要在子类的第一行
System.out.println("Student无参执行了");
}
private String name = "qinjiang";
public void print() {
System.out.println("Student");
}
public void test1() {
print();
this.print();
super.print();
}
public void test(String name) {
System.out.println(name);//秦疆
System.out.println(this.name);//qinjiang
System.out.println(super.name);//kuangshen
}
}
/*
public static void main(String[] args) {
Student student = new Student();
student.test("秦疆");
student.test1();
}
*/
//Java-零基础学习/src/oop/demo05/Teacher
package oop.demo05;
//在Java中,所有的类,都默认直接或者间接继承object
//Person 人:父类
public class Person {
public Person() {
System.out.println("Person无参执行了");
}
protected String name = "kuangshen";
public void print() {
System.out.println("Person");
}
}
//Java-零基础学习/src/oop/Application
package oop;
import oop.demo05.Student;
//一个项目应该只存在一个main方法
public class Application {
public static void main(String[] args) {
Student student = new Student();
student.test("秦疆");
student.test1();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理