再谈 super 关键字

1. 写在前面

平时只是随便用用,没有整体的总结过super这个关键字。
因此,今天这里我们系统的去看一下 super 关键字的特性和用法。


2. 理论知识

2.1 前置

在了解 super 关键字之前,我们需要了解一个前置信息:

每当创建子类的实例时,不会创建父类对象,但是会调用父类构造方法。并且,这个父类的构造方法会在子类构造方法第一行(即先于子类构造方法执行)。

那么为什么执行子类构造方法之前,需要执行父类的构造方法呢?因为子类需要
从父类继承 属性 & 方法

要继承就要先有啊,这就要求父类构造器先执行,初始化相关的对象和方法。

2.2 用法

super 关键字的用法包括如下几种:

  • super 引用直接父类对象
  • super() 调用直接父类构造函数

3. code

3.1 super引用直接父类对象

这里通过 super 关键字直接引用父类对象【引用了对象自然就可以使用父类对象的属性&方法】

  • 通过父类对象引用父类成员
public class Animal{
      private String name="animal";
}

public class Dog extends Animal{
      private String name = "dog";

      public void printName(){
          sout(name);
          sout(super.name);    // 这里打印 直接父类 的name属性 "animal"
      }
}
  • 通过父类对象引用父类方法
public class Animal{
      public void bark(){
            sout("animal is barking.");
      }
}

public class Dog{
      public void bark(){
          super.bark();    // 这里调用父类的 bark() 方法。
          sout("dog id barking....");
      }
}

3.2 super() 调用父类构造函数

直接看代码吧

public class Animal{
      Animal(){
          sout("Animal is created.");
      }
}

public class Dog{
      Dog(){
          super();
          sout("dog is created.");
      }
}

// main 方法调用
main(){
      Dog dog = new Dog();
}

这里输出如下:

Animal is created.
dog is created.

你可能感兴趣的:(再谈 super 关键字)