【问题标题】:Interface specifies methods接口指定方法
【发布时间】:2012-10-11 17:32:24
【问题描述】:
编写一个名为 Nameable 的接口,指定以下方法:
public void setName(String n)
public String getName()
这是我得到的:
public interface Nameable{
public void setName(String n){
n =name; }
public String getName() {
return n; } }
这是正确的还是有更好的方法?
【问题讨论】:
标签:
java
methods
interface
【解决方案1】:
接口没有指定实现,所以不,这是不正确的。
您必须将可用方法(接口)和实现(类)的定义分开:
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;
}
}
【解决方案2】:
不,您没有在接口中定义方法,您只需声明它们。稍后实现该接口的类提供该方法的实现。
这是正确的还是有更好的方法?
更好的方法?是的。复制此代码并粘贴到您最喜欢的 IDE 中。它会告诉你哪里错了,有这么多Red-Marks。
像Eclipse 这样的IDE 如果你创建了这样一个界面就会突然开始尖叫,你可以告诉它为你更正它。然后你就可以看到魔法了。
【解决方案3】:
您必须记住,接口只提供方法声明,不提供实现。这取决于实现的类。
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
}
}
【解决方案4】:
您的代码将为您提供Abstract methods do not specify a body。
接口的所有方法默认都是abstract,抽象方法没有body,看这里abstract
interface 是一组具有空主体的相关方法,但在您的代码中,所有具有主体的方法都无法编译,请参阅how interface work
更多关于wiki