为了账号安全,请及时绑定邮箱和手机立即绑定

我如何能够在实现该接口的类中更改接口变量值

我如何能够在实现该接口的类中更改接口变量值

月关宝盒 2021-11-03 10:57:09
我创建了一个如下所示的界面:public interface CalculatorInterface {       int x=10; int y=15; int z=x+y;       public void add1();}然后我创建了一个正在实现它的类。该类如下所示:public class AdvClass2 implements CalculatorInterface {    public static void main(String[] args) {       int x=50;       System.out.println("X value is" +x);    }    @Override    public void add1() {        System.out.println("I am in Add Method");           }}但是规则说我不能正确更改接口变量值。有人能告诉我我做错了什么吗?
查看完整描述

3 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

接口中的变量默认是 静态最终(您可以将其称为静态常量)变量,因此您只能为其赋值一次,之后无法更改其值。

检查此站点的最终关键字 - https://www.javatpoint.com/final-keyword


查看完整回答
反对 回复 2021-11-03
?
www说

TA贡献1775条经验 获得超8个赞

您实际上是在更改main函数中的局部变量。此变量与您在接口中声明的变量不同,后者确实public, static and final是默认设置。但是局部变量没有这样的限制。


此外,如果局部作用域中有一个同名的变量,那么该变量优先于外部作用域中的同名变量。


编辑:


正如我之前解释的,你x在主函数中声明为局部变量,它x与接口中的变量不同。如果在尝试更改接口x变量时出现编译错误,请在主函数中执行以下操作:


public static void main(String[] args) {

   x=50;

   System.out.println("X value is" +x);

}

现在您将看到一个编译错误,告诉您无法分配接口的 x 变量。


查看完整回答
反对 回复 2021-11-03
?
catspeake

TA贡献1111条经验 获得超0个赞

由于接口不能直接实例化,因此接口变量默认是静态的和最终的。我们不允许更改它们。


接口不能包含任何实现。Java 接口只能包含方法签名和字段。


我认为你需要一个更好的设计。所以界面应该是这样的:


public interface ICalculator {


public int add1(int a, int b); // this is the method signature, not the implementation.


然后在AdvClass2你可以实现该add1方法:


@Override

public int add1(int a, int b) {

   int result = a + b;


   return result;

}


查看完整回答
反对 回复 2021-11-03
  • 3 回答
  • 0 关注
  • 454 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信