2021-04-18 10:57  阅读(95)
文章分类:Java 基础教程 文章标签:JavaJava 教程
©  原文作者:w3cschool 原文地址:https://www.w3cschool.cn/java/java-class-instance.html

Java面向对象设计 - Java继承和构造函数

构造函数不是类的成员,它们不是由子类继承的。

它们用于初始化实例变量。

    class CSuper {
      public CSuper() {
        System.out.println("Inside CSuper() constructor.");
      }
    }
    
    class CSub extends CSuper {
      public CSub() {
        System.out.println("Inside CSub()  constructor.");
      }
    }
    
    public class Main {
      public static void main(String[] args) {
        CSub cs = new CSub();
      }
    }
    

上面的代码生成以下结果。

20210418105112_1.png

例子

下面显示了如何编译器注入一个super()来立即调用父类的无参数构造函数。

    class CSuper {
      public CSuper() {
        super(); // Injected by the compiler
        System.out.println("Inside CSuper() constructor.");
      }
    }
    
    class CSub extends CSuper {
      public CSub() {
        super(); // Injected by the compiler
        System.out.println("Inside CSub()  constructor.");
      }
    }
    
    public class Main {
      public static void main(String[] args) {
        CSub cs = new CSub();
      }
    }
    

上面的代码生成以下结果。

2021041810513_2.png

关键字super指的是类的直接父类。

我们可以调用超类构造函数,只使用super关键字作为构造函数中的第一个语句。

无参数构造函数

我们可以将超类的no-args构造函数或任何其他构造函数显式地调用为类的构造函数中的第一个语句。

只有在没有明确添加的情况下,编译器才会注入no-args构造函数调用。

    class Employee {
      private String name = "Unknown";
    
      public Employee(String name) {
        this.name = name;
      }
    
      public void setName(String name) {
        this.name = name;
      }
    
      public String getName() {
        return name;
      }
    }
    
    class Manager extends Employee {
      public Manager(String name) {
        super(name);
      }
    }
    
    public class Main {
      public static void main(String[] args) {
        Manager mgr = new Manager("Tom");
        String name = mgr.getName();
        System.out.println("Manager name:  " + name);
      }
    }
    

上面的代码生成以下结果。

2021041810510_3.png

每个类都必须直接或间接地从其构造函数中调用其超类的构造函数。

如果超类没有no-args构造函数,我们必须显式地调用超类的任何其他构造函数。

点赞(0)
版权归原创作者所有,任何形式转载请联系作者; Java 技术驿站 >> Java 继承和构造函数
上一篇
Java 方法重写
下一篇
Java 继承隐藏