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

我创建了一个如下所示的界面:


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");       

    }}

但是规则说我不能正确更改接口变量值。有人能告诉我我做错了什么吗?


月关宝盒
浏览 471回答 3
3回答

不负相思意

接口中的变量默认是 静态最终(您可以将其称为静态常量)变量,因此您只能为其赋值一次,之后无法更改其值。检查此站点的最终关键字 - https://www.javatpoint.com/final-keyword

www说

您实际上是在更改main函数中的局部变量。此变量与您在接口中声明的变量不同,后者确实public, static and final是默认设置。但是局部变量没有这样的限制。此外,如果局部作用域中有一个同名的变量,那么该变量优先于外部作用域中的同名变量。编辑:正如我之前解释的,你x在主函数中声明为局部变量,它x与接口中的变量不同。如果在尝试更改接口x变量时出现编译错误,请在主函数中执行以下操作:public static void main(String[] args) {   x=50;   System.out.println("X value is" +x);}现在您将看到一个编译错误,告诉您无法分配接口的 x 变量。

catspeake

由于接口不能直接实例化,因此接口变量默认是静态的和最终的。我们不允许更改它们。接口不能包含任何实现。Java 接口只能包含方法签名和字段。我认为你需要一个更好的设计。所以界面应该是这样的:public interface ICalculator {public int add1(int a, int b); // this is the method signature, not the implementation.} 然后在AdvClass2你可以实现该add1方法:@Overridepublic int add1(int a, int b) {   int result = a + b;   return result;}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java