美文网首页
再谈 super 关键字

再谈 super 关键字

作者: MikeShine | 来源:发表于2022-03-31 11:56 被阅读0次

    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 关键字

          本文链接:https://www.haomeiwen.com/subject/yjzgjrtx.html