java - 继承: How child class interact with its parent?

标签 java inheritance superclass

我有以下代码:

class Shoe {
    public Shoe(){
        this("thise a shoe");
        System.out.println("Base Class");
     }
    public Shoe(String s){
        System.out.println(s);
    }
}

class TennisShoe extends Shoe {
     public TennisShoe (){
           this("This is a Tennis Shoe");
           System.out.println("Derived Class");
      }
      public TennisShoe(String s){
           super("Exam 1");
           System.out.println(s);
    }
}

class WhiteTennisShoe extends TennisShoe {
     public WhiteTennisShoe(String s){
         System.out.println(s);
}
}

class Test{
   public static void main(String [] args){
       new WhiteTennisShoe("A White Tennis Shoe is Created");
    }

}

输出是:

<小时/>

考试 1

这是一双网球鞋

派生类

白色网球鞋已制作完成

<小时/>

我只是不明白为什么编译器没有

WhiteTennisShoe类中的构造函数public WhiteTennisShoe(String s)

TennisShoe类中的构造函数public TennisShoe (String s)

最佳答案

在此构造函数中

public WhiteTennisShoe(String s){
     System.out.println(s);
}

您没有指定应使用 TennisShoe 的哪个构造函数 - 没有 super 行。当你这样做时,编译器会自动选择不带参数的父类(super class)构造函数;如果没有这样的构造函数可用,这将是一个编译错误(尽管如果根本没有为父类(super class)定义构造函数,它将创建自己的构造函数)。

因此,被调用的 TennisShoe 构造函数是

public TennisShoe (){
       this("This is a Tennis Shoe");
       System.out.println("Derived Class");
}

当然,它会调用另一个 TennisShoe 构造函数。

关于java - 继承: How child class interact with its parent?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19811198/

相关文章:

java - 引用父类(super class)时如何调用子类的方法?

c++ - 在 C++ 中寻找比虚拟继承更好的方法

ios - 无法更改父类(super class)变量 "description"

java - 安卓 谷歌游戏

java - 使用 JFileChooser 保存字符串

java - 如何处理仅由同一类中的其他方法调用但不应由实例调用的方法?

java - 在java中用double返回一个对象?

java - 如何将类对象写入bin文件

c++ - 虚拟成员函数和非虚拟成员函数的调用方式有何区别?

java - 为什么 java 多态性在我的示例中不起作用