Java 在接口中使用set/get方法
我是Java新手(整整一年!) 我的问题是如何在接口中编写set/get方法和静态字段,并在另一个类中实现它 我的代码如下:(简短!) 在语句Java 在接口中使用set/get方法,java,interface,Java,Interface,我是Java新手(整整一年!) 我的问题是如何在接口中编写set/get方法和静态字段,并在另一个类中实现它 我的代码如下:(简短!) 在语句number=num中有错误,但在setName方法中没有错误 您无法在接口中定义实例字段(它们是常量-静态最终值,这要感谢,因为它们只是实现的一部分。因此,接口中只有getter和setter,而实现中会出现该字段 而setNumber应该返回一个void而不是int。为了获取,我建议您添加int getNumber() 如您所见,只有setNumber
number=num
中有错误,但在setName方法中没有错误 您无法在接口中定义实例字段(它们是常量-静态最终值,这要感谢,因为它们只是实现的一部分。因此,接口中只有getter和setter,而实现中会出现该字段
而setNumber
应该返回一个void
而不是int
。为了获取,我建议您添加int getNumber()
如您所见,只有setNumber
是MyInterface
的一部分。消费者不需要知道该号码是如何存储的,因此它是一个实现细节
此外,在Java中,您可以在PascalCase
中命名类和接口,而不是camelCase接口不能包含方法体定义,默认情况下,字段是public
,final
和static
,通常用于常量声明。它将在您要导入的位置定义删除此接口
在Java编程语言中,接口是一种引用类型,类似于类,只能包含常量、方法签名和嵌套类型。没有方法体。接口不能实例化,只能由类实现或由其他接口扩展
但是,抽象类
既可以包含具体方法,也可以包含抽象方法。您不能更改接口中声明的字段,因为它们是由deafulatpublic static final
声明的
您将看到final
,因此它们在初始化后无法更改
在接口中,不能像在代码中那样给出方法的实现
只需将;
放在方法签名之后,而不是{}
(甚至不是空的{}
):
当您在接口中定义一个值时,它是隐式的公共静态final
,即它是不可变的,而不是实例字段
接口用于定义契约,而不是行为,因此坚持所有实现都有此字段是没有意义的
顺便说一句,如果您有一个抽象类
以及一个接口
接口
中的字段默认为公共静态最终即常量,则可以执行此操作。请记住,您已经在接口
中初始化了编号
,并尝试在中更改其值我们的实现类打破了最终变量的规律
发件人:
变量可以声明为final。final变量只能声明为final
指定给一次。声明变量final非常有用
其值不会改变且有助于避免的文档
编程错误
如果最后一个变量被指定给了,则是编译时错误
在紧接转让之前,它肯定是未转让的(§16)
接口中的方法也是默认的公共抽象。我不理解你接口中的方法签名。它应该是如下所示
public void method();
或者更确切地说,你可以在接口中声明的字段只有常量。你应该三思而后行,看看你是否真的想在接口中设置setter
。鉴于你不知道实现,如果你强迫他们使用setter,你可能说得太多了-虚拟或常量实现不需要它们。我同意。但是,OP已经有了“孤独”的setter,我认为它比getter更不常见。这就是为什么我添加了这两个。除了所有正确的答案之外,setNumber方法当前必须返回int值,否则它将无法编译。可能是
public interface MyInterface {
void setNumber(int num); // public is implicit in interfaces
int getNumber(); // obviously
}
public class MyClass implements MyInterface {
private int number = 0;
public void setNumber(int num) { this.number = num; }
public int getNumber() { return this.number; }
}
public int setNumber(int num);
public void method();