关键字super
原创
©著作权归作者所有:来自51CTO博客作者日星月云的原创作品,请联系作者获取转载授权,否则将追究法律责任
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);
}
}