super关键字的使用:

一、super理解为:父类的

二、super可以用来调用属性、方法、构造器

三、super的使用

  • 3.1 我们可以在子类的方法或构造器中通过使用"super.属性"或"super.方法"显示的调用父类中声明的属性或方法。但是,通常情况下,我们习惯省略"super"。
  • 3.2特殊情况:当子类和父类中定义了同名的属性时,我们要想在子类中调用父类中声明的属性,就必须显示的使用”super.属性"的方式,表明调用的是父类中声明的属性。
  • 3.3特殊情况:当子类重写了父类中的方法以后,我们想在子类的方法中调用父类被重写的方法时,使用”super.方法"的方式,表明调用的是父类中被重写的方法。

四、super调用构造器

  • 4.1 我们可以在构造器中显示的使用“super(形参列表)”的方式,调用父类中声明的指导的构造器
  • 4.2 “super(形参列表)”的方式使用,必须声明在子类构造器的首行!
  • 4.3 我们在类的构造器中,针对“super(形参列表)”或“this(形参列表)”只能二选一不能同时出现。
  • 4.4 当我们在构造器的首行,没有显示的说明“super(形参列表)”或“this(形参列表)”,则默认的调用的是父类中空参的构造器,super()
  • 4.5 在类的多个构造器中,至少有一个类的构造器使用了"super(形参列表)",调用父类中的构造器。

在B站学习java写的代码
代码如下

/*
* super关键字的使用:
*
* 1.super理解为:父类的
*
* 2、super可以用来调用属性、方法、构造器
*
* 3.super的使用
*
* 3.1 我们可以在子类的方法或构造器中通过使用"super.属性"或"super.方法"显示的调用父类中声明的属性或方法
* 但是,通常情况下,我们习惯省略"super"
* 3.2 特殊情况:当子类和父类中定义了同名的属性时,我们要想在子类中调用父类中声明的属性,就必须显示的
* 使用”super.属性"的方式,表明调用的是父类中声明的属性。
* 3.3 特殊情况:当子类重写了父类中的方法以后,我们想在子类的方法中调用父类被重写的方法时,使用”super.方法"的方式,表明调用的是父类中被重写的方法。
*
* 4.super调用构造器
* 4.1 我们可以在构造器中显示的使用“super(形参列表)”的方式,调用父类中声明的指导的构造器
* 4.2 “super(形参列表)”的方式使用,必须声明在子类构造器的首行!
* 4.3 我们在类的构造器中,针对“super(形参列表)”或“this(形参列表)”只能二选一不能同时出现。
* 4.4 当我们在构造器的首行,没有显示的说明“super(形参列表)”或“this(形参列表)”,则默认的调用的是父类中空参的构造器,super()
* 4.5 在类的多个构造器中,至少有一个类的构造器使用了"super(形参列表)",调用父类中的构造器。
*
*/

superTest类

package com.day0124_1;

public class superTest {
public static void main(String[] args) {
Student s=new Student();
s.show();

s.study();

Student s1=new Student("Tom",21,"IT");
s1.show();

System.out.println("*******************");
// Student s2=new Student();



}
}

Person类

package com.day0124_1;

public class Person {
String name;
int age;
int id=1001;//身份证号
public Person() {
System.out.println("我无处不在");
}

public Person(String name) {
this.name=name;
}

public Person(String name,int age) {
this(name);
this.age=age;
}

public void eat() {
System.out.println("人:吃饭");
}

public void walk() {
System.out.println("人:走路");
}




}

Student类

package com.day0124_1;

public class Student extends Person{

String major;
int id=1002;//学号
public Student() {

}

public Student(String major) {
super();
this.major=major;
}

public Student (String name,int age,String major) {
// this.name=name;
// this.age=age;
super(name,age);
this.major=major;
}

public void eat() {
System.out.println("学生:吃有营养的饭");
}

public void study() {
System.out.println("学生:学习知识");
this.eat();
super.eat();
walk();
}

public void show() {
System.out.println("name="+this.name+",age="+super.age);
System.out.println("id="+this.id);
System.out.println("id="+super.id);
}
}