2016-10-05 11 views
0

抽象クラスの別のコンストラクタでコンストラクタを呼び出すことができるかどうかについて質問があります。たとえば、概要Javaのクラスコンストラクタ

public abstract class Sth{ 
    protected Sth(){} 
    protected Sth(int number){} 
    protected Sth(String word){ 
    int number = 0; 
    this(number); 
    } 

Javaではこれを許可していないようです。私たちはこれを起こさせる方法があれば疑問に思った?ありがとう

--------------------------------------------- - 説明 - - - - - - - - - - - - - - - - - - - - - - - - ----------------------- 私がしたいのは、特に2番目のコンストラクタを呼び出すことです。 Javaで最初のコンストラクタを呼び出す必要があるため、エラーが発生しました。だから私はここでコードを一切削除せずに最初のコンストラクタをスキップできるかどうか疑問に思った。混乱させて申し訳ありません。

+2

いいえはい:a)セミコロンがありません。 b) 'Sth(String word)'コンストラクタには、スコープ内に 'number'変数がありません。これは、抽象クラスであることとは関係ありません。あなたは何をすると思いましたか? –

+0

他のコンストラクタから1つのコンストラクタを呼び出すことはできます。コンパイルされていない偽のものではなく、あなたが抱えている問題を示す例を作成し、特定のエラーを含めてください。 –

+0

私はそれを簡単に書きます。はい、それはセミコロンがありません、私はintとして、最初の数を無視し、ちょうどコードを短く、まだ読めるようにします。ええ、私はおそらくそれを追加すべきです。 @ JonSkeet –

答えて

0
  1. 6行コンストラクタの呼び出しは、コンストラクタ最後に
  2. の最初のステートメントでなければなりません、閉じ括弧は

あなたは、次のコードをしたいコードの終わりに欠けていますか?

public abstract class Sth { 
    protected Sth() {} 
    protected Sth(int number) {} 
    protected Sth(String word, int number) { 
     this(number); 
    } 
} 
+0

いいえ、実際にはありません。混乱させて申し訳ありません。私の更新を見てください –

0

実際、答えは、抽象クラスコンストラクタは使用できません。したがって、インスタンス化することはできません。チェックJava docs