2016-04-10 1 views
2
public class Animal { 
    String name; 

    Animal(String name) { 
     this.name = name; 
    } 

    Animal() { 
     this(makeRandomName()); 
    } 

    static String makeRandomName() { 
     int x = (int) (Math.random() * 5); 
     String name = new String[] {"Fluffy", "Fido","Rover", "Spike","Gigi"}[x]; 
     return name; 
    } 

    public static void main (String [] args) { 
     Animal a = new Animal(); 
     System.out.println(a.name); 
     Animal b = new Animal("Zeus"); 
     System.out.println(b.name); 
    } 
} 
+0

5行目の6を無視する –

+0

なぜ人々は「動物」に興味がありますか?過去44分間に3つの質問があったと思いますが、その名前は実験に使用されています。 – Hackerdarshi

+1

質問を編集してください。最初にコードブレースを使用してコードのインデントを良くします。 'コード開始 コード終了' 上記と同じです。 – vijayinani

答えて

3

いいえ、(this(makeRandomName());を使用して)他のコンストラクタを呼び出すAnimal()コンストラクタため、super()が追加されません。それはAnimal(String name)コンストラクタにのみ追加されます。

これはもちろん、両方のコンストラクタがスーパークラスのコンストラクタ(つまり、Objectのコンストラクタ)の実行を終了することを意味します。

2

super()super()またはthis()コールがすでに明示的に存在しない限り、コールが挿入されます。

関連する問題