关键字super

简介: 关键字super

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);
  }
}
相关文章
|
4月前
|
消息中间件 Kubernetes NoSQL
c++11 关键字 override 与 final
c++11 关键字 override 与 final
|
6月前
|
存储 Cloud Native Linux
C++ 关键字override,final的作用
C++ 关键字override,final的作用
|
8月前
this和super的区别
this和super的区别
40 0
|
2月前
|
算法 安全 编译器
【C++ 关键字 override】C++ 重写关键字override(强制编译器检查该函数是否覆盖已存在的虚函数)
【C++ 关键字 override】C++ 重写关键字override(强制编译器检查该函数是否覆盖已存在的虚函数)
27 0
|
9月前
定义类,super的使用,super的使用
要求: a.需要有一个类变量 b.需要有>=2个的对象变量 c.定义一个方法:打印类变量和对象变量 d.使用print打印对象->输出为This is a object e.实例化两个对象:且两个对象相加等于2 f.为对象添加一个临时变量temp_var
31 0
|
6月前
|
Java 编译器
【继承顺序和方式,子类构造方法,protected 关键字,final 关键字】
【继承顺序和方式,子类构造方法,protected 关键字,final 关键字】
27 0
|
8月前
|
Java
关键字:super
关键字:super
33 0
|
8月前
|
Java 编译器 C#
C#中的override和new关键字
在 C# 中,派生类可以包含与基类方法同名的方法。 基类方法必须定义为 virtual。 如果派生类中的方法前面没有 new 或 override 关键字,则编译器将发出警告,该方法将有如存在 new 关键字一样执行操作。 如果派生类中的方法前面带有 new 关键字,则该方法被定义为独立于基类中的方法。 如果派生类中的方法前面带有 override 关键字,则派生类的对象将调用该方法,而不是调用基类方法。 可以从派生类中使用 base 关键字调用基类方法。
37 1
|
8月前
14-self与super以及isMemberOfClass与isKindOfClass的区别
14-self与super以及isMemberOfClass与isKindOfClass的区别
27 0
|
Java 编译器
重写,重写规则 Super 关键字的使用,重写与重载之间的区别 , @override有什么用,以及加不加@override有什么区别
重写,重写规则 Super 关键字的使用,重写与重载之间的区别 , @override有什么用,以及加不加@override有什么区别
195 0