0

次のメソッドを指定する Nameable という名前のインターフェイスを記述します。

public void setName(String n)
public String getName()

これは私が得たものです:

 public interface Nameable{     
     public void setName(String n){         
                n =name;     }    
        public String getName() {
                  return n;    } }

これは正しいですか、それとももっと良い方法がありますか??

4

4 に答える 4

6

インターフェイスは実装を指定しないので、いいえ、これは正しくありません。

利用可能なメソッド (インターフェイス) と実装 (クラス) の定義を分離する必要があります。

public interface Nameable{     
     public void setName(String n); 
     public String getName();
}

public class Named implements Nameable {
      private String name;
      public void setName(String n){         
          this.name = n;
     }    
     public String getName() {
        return this.name;
    }
}
于 2012-10-11T17:32:55.573 に答える
2

いいえ、インターフェイスでメソッドを定義するのではなく、宣言するだけです。後でそのインターフェースを実装するクラスは、メソッドの実装を提供します。

これは正しいですか、それとももっと良い方法がありますか??

より良い方法?はい。このコードをコピーして、お気に入りの IDE に貼り付けます。どこが間違っているかを教えてくれますRed-Marks

そのようなインターフェイスを作成すると、 IDE のようなものがEclipse突然叫び始め、それを修正するように指示できます。その後、魔法を見ることができます。

于 2012-10-11T17:33:06.003 に答える
0

あなたのコードはあなたに与えるでしょうAbstract methods do not specify a body

インターフェイスのすべてのメソッドはデフォルトであり、 abstractabstractメソッドには本体がありません。abstractを参照してください。

Anは、本体が空interfaceの関連メソッドのグループですが、コードでは、コンパイルされないように本体を持つすべてのメソッドで、インターフェイスがどのように機能するかを確認してください。

ウィキの詳細

于 2012-10-12T05:04:26.777 に答える
0

インターフェイスはメソッド宣言のみを提供し、実装は提供しないことを覚えておく必要があります。それは実装されたクラス次第です。

public interface Nameable
{  
     public void setName(String n);
     public String getName();
}
public class NameableImplmentation implments Nameable
{
     public void setName(String n)
     {         
         //insert code    
     }    
     public String getName() 
     {
         //insert code
     } 
}
于 2012-10-11T17:37:25.253 に答える