2017-08-04 11 views
-2

最初の中括弧に構文エラーが表示されますが、最初の変数が宣言された後に閉じ括弧を追加する必要があると言います。なぜこの構文エラーが発生するのかわからない

public class DogNeeds extends PetNeeds { 
    super.setAnimalType("dog"); //This method is inherited from PetNeeds superclass 
    protected boolean walk; 

    public DogNeeds(String name) { 
     super(name); 
     // TODO Auto-generated constructor stub 
    } 

    boolean getWalk() { 
     return walk; 
    } 

    void setWalk(boolean walk) { 
     this.walk = walk; 
    } 

    public void walkDog() { 
     if(walk) { 
      System.out.println("Time to walk " + super.getName()); 
     } 
     else { 
      System.out.println(super.getName() + " doesn't need to go out yet."); 
     } 
    } 
} 
+2

メソッドに 'super.setAnimalType'文を入れてください – Reimeus

+6

' super.setAnimalType( "dog")のような行をメソッド、コンストラクタ、イニシャライザブロックの外に置くことはできません。 –

答えて

1

このライン:

super.setAnimalType("dog"); //This method is inherited from PetNeeds superclass 

は、メソッドまたはコンストラクタ内でなければなりません。

1

super.setAnimalType("dog")はメソッドの外にあることはできません。任意のメソッドまたはオーバーライドメソッドに追加できます。例:あなたはこのようなメソッドを呼び出すと

public class DogNeeds extends PetNeeds { 

    protected boolean walk; 

    public DogNeeds(String name) { 
    super(name); 
    // TODO Auto-generated constructor stub 
    } 

    void setAnimalType(String animal) { 
    super.setAnimalType(animal); 
    } 

    boolean getWalk() { 
    return walk; 
    } 

void setWalk(boolean walk) { 
    this.walk = walk; 
} 

public void walkDog() { 
    if(walk) { 
     System.out.println("Time to walk " + super.getName()); 
    } 
    else { 
     System.out.println(super.getName() + " doesn't need to go out 
     yet."); 
    } 
    } 
} 
1

super.setAnimalType("dog"); すると、それはあなた自身のメソッドの内部で行く必要があります。何らかの宣言ではないので、関数/メソッドのどこかで実行する必要があります。

P.S.私は今朝、似たような間違いを犯しました。

関連する問題