这个Java接口代码有什么问题?

这个Java接口代码有什么问题?,java,interface,Java,Interface,这是我第一次Java测试中的一个问题,我被困在这个问题上了 这个代码有什么问题 如何修复它 此代码是否错误,因为接口不能包含任何方法或打印输出方法 测验的第二部分是 假设对前一代码进行了更正,则以下代码是否有效 public interface SomethingWrong { public void aMethod(int value) { System.out.print("Hi"); } } 第一项问题: 答:接口中的方法不能有方法体 第二个问题:如何解

这是我第一次Java测试中的一个问题,我被困在这个问题上了

  • 这个代码有什么问题
  • 如何修复它
  • 此代码是否错误,因为接口不能包含任何方法或打印输出方法

    测验的第二部分是

    假设对前一代码进行了更正,则以下代码是否有效

    public interface SomethingWrong {
        public void aMethod(int value) {
            System.out.print("Hi");
        }
    } 
    
    第一项问题: 答:接口中的方法不能有方法体

    第二个问题:如何解决 答复:

    public interface SomethingWrong {
        public void aMethod(int value) {
            System.out.print("Hi");
        }
    } 
    
    只需删除方法体并实现它,这样就可以覆盖
    aMethod(int值)

    附加1: 附加2: 假设您有两个接口,您可以实现一个类(具体或抽象)的多个接口,并且您永远无法实现另一个接口的接口,但您可以将多个接口扩展到另一个接口

    补充3: 您无法创建接口或抽象类的新实例,因此这意味着您无法执行以下操作:

    public class MainClass implements SomethingWrong{
        //Here since you implement the interface you are now required to override it in this class. 
        // You can do it by adding a method body.
        public void aMethod(int value){
            System.out.print("Hello World");
        }
    }
    

    因为接口没有构造函数。如果我错了,请更正:)

    添加
    default
    关键字,它将与Java 8编译器一起工作:

    SomethingWrong some = new SomethingWrong(); 
    

    你有什么错误?顺便说一句,您不能在类外声明变量
    var
    。如果您有Java 8,您可以向方法
    aMethod
    添加
    default
    修饰符,这将是有效的。除此之外,还取决于Java版本。@Richard,根据答案,了解您考虑的是哪个JDK会很有帮助。这是学校测验还是什么?如果是这样,我高度怀疑是JDK 8,我认为有什么不对的var=new Foo();是正确的,我们正在Foo上创建一个引用了某些错误的实例是正确的,我最近在spring中使用过:)您可以使用接口引用类
    public class MainClass implements SomethingWrong{
        //Here since you implement the interface you are now required to override it in this class. 
        // You can do it by adding a method body.
        public void aMethod(int value){
            System.out.print("Hello World");
        }
    }
    
    SomethingWrong some = new SomethingWrong(); 
    
    public interface SomethingWrong {
        default public void aMethod(int value) {
            System.out.print("Hi");
        }
    }