关键字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);
  }
}
相关文章
|
7月前
|
消息中间件 Kubernetes NoSQL
c++11 关键字 override 与 final
c++11 关键字 override 与 final
|
存储 Cloud Native Linux
C++ 关键字override,final的作用
C++ 关键字override,final的作用
|
4月前
|
存储 Java 编译器
关键字: final详解
掌握final关键字的使用对于Java程序员来说至关重要。它不仅能够提高程序的安全性和清晰性,还可以帮助编译器在一些情况下进行优化。恰当使用final可以使你的Java代码更加健壮、高效。
53 0
|
7月前
|
存储 Java C++
31.C#:关键字static
31.C#:关键字static
62 1
|
Java
关键字:super
关键字:super
67 0
|
Java 编译器 C#
C#中的override和new关键字
在 C# 中,派生类可以包含与基类方法同名的方法。 基类方法必须定义为 virtual。 如果派生类中的方法前面没有 new 或 override 关键字,则编译器将发出警告,该方法将有如存在 new 关键字一样执行操作。 如果派生类中的方法前面带有 new 关键字,则该方法被定义为独立于基类中的方法。 如果派生类中的方法前面带有 override 关键字,则派生类的对象将调用该方法,而不是调用基类方法。 可以从派生类中使用 base 关键字调用基类方法。
79 1
关键字static
延长局部变量的生命周期,缩小全局变量和函数的作用
51 0
|
Java
关键字abstract
关键字abstract
64 0
|
Java
关键字final
关键字final
48 0
|
编译器 C++
【C++11】final与override关键字和类的新功能
#「持之以恒」挑战赛-30天技术创作养成记!# 目录 一、final与override关键字 1.1 final 1.2 override 二、类的新功能 2.1 默认成员函数 2.2 类成员变量初始化 2.3 default关键字 2.4 delete关键字
112 0
【C++11】final与override关键字和类的新功能