【问题标题】:Java Tic Tac Toe constructorsJava井字游戏构造函数
【发布时间】:2014-03-22 12:35:55
【问题描述】:

我正在尝试遵循本教程: https://www.youtube.com/watch?v=Db3cC5iPrOM

在 2:59 我听不懂他在说什么。

我不明白他为什么在构造函数中创建构造函数(new TicTacToe();) (public static void main(String args[])

public static void main(String args[]){
    new TicTacToe();
}

public TicTacToe(){
    super("TicTacToe");
}

我们不能这样做吗?有什么区别?

public static void main(String args[]){
    super("TicTacToe");
}

【问题讨论】:

  • main 是一个静态方法。它不是构造函数。

标签: java


【解决方案1】:

super 表示:在继承的情况下调用父级的构造函数。如果你想使用TicTacToe 类,你必须调用new 在你的main 方法中创建一个TicTacToe 的实例。

在进一步学习本教程之前,您可能需要了解继承多态。 p>

BaseTicTacToe - 基类

public class BaseTicTacToe {
    private String name;

    public BaseTicTacToe(String name) {
        this.name = name;
    }
}

井字游戏 - 子类

public class TicTacToe extends BaseTicTacToe {
    public TicTacToe() {
        super("TicTacToe");
    }
}

井字游戏驱动

public class TicTacToeDriver {
    public static void main(String[] args) {
        new TicTacToe(); // Instatiate a new TicTacToe instance.
    }
}

在当前类中调用另一个构造函数时,您可能还会看到以下内容。

public class TicTacToe {
    private String name;        

    // Default constructor.
    public TicTacToe() {
        this("TicTacToe"); // Call the constructor below.
    }

    // Overloaded constructor (polymorphism)
    public TicTacToe(String name) {
        this.name = name;
    }

    public static void main(String[] args) {
        new TicTacToe();          // Call default:  "TicTacToe"
        new TicTacToe("My Name"); // Call overload: "My Name"
    }
}

【讨论】:

    【解决方案2】:

    main 不是构造函数,它是一个静态方法,它是您的应用程序的入口点。由于它是静态方法,因此您无需创建类的实例即可调用它。

    您只能调用super 在超类构造函数中调用超类的构造函数,并且由于main 不是构造函数,因此您的第二个代码示例无效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多