【问题标题】:what is wrong with this Java Interface code?这个 Java 接口代码有什么问题?
【发布时间】:2014-12-03 05:19:53
【问题描述】:
public interface SomethingWrong {
    public void aMethod(int value) {
        System.out.print("Hi");
    }
} 

这是我的第一个 Java 测验中的一个问题,我有点坚持。

  1. 这段代码有什么问题
  2. 如何修复它

此代码是否错误,因为接口不能包含任何方法或打印输出方法。

测验的第二部分是这样的

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

  public class Foo implements SomethingWrong {
  }

  SomethingWrong var = new Foo();

【问题讨论】:

  • 你得到什么错误?顺便说一句,您不能在类外声明变量 var。
  • 如果你有 Java 8,你可以将 default 修饰符添加到方法 aMethod 中,这将是有效的。除此之外,取决于 Java 版本。
  • @Richard,根据答案,知道您正在考虑使用哪个 JDK 会很有帮助。这是学校测验还是什么?如果是这样,我非常怀疑它会是 JDK 8

标签: java interface


【解决方案1】:

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

public interface SomethingWrong {
    default public void aMethod(int value) {
        System.out.print("Hi");
    }
} 

【讨论】:

    【解决方案2】:

    没有。 1 个问题:

    public interface SomethingWrong {
        public void aMethod(int value) {
            System.out.print("Hi");
        }
    } 
    

    答案:接口中的方法不能有方法体。

    没有。 2 问题:如何解决它

    答案:

    public interface SomethingWrong{
        public void aMethod(int value);
    }
    

    只需删除方法体并实现它,以便您可以覆盖aMethod(int value);

    附加1:

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

    补充2:

    假设您有两个接口,您可以为一个类(具体或抽象)实现多个接口,并且您永远不能实现另一个接口的接口,但您可以将多个接口扩展到另一个接口。

    补充3:

    您不能创建接口或抽象类的新实例,因此这意味着您不能这样做:

    SomethingWrong some = new SomethingWrong(); 
    

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

    【讨论】:

    • 我认为 SomethingWrong var = new Foo(); 是正确的,我们正在 Foo 上创建一个引用 SomethingWrong的实例>
    • 是的,我最近在春天使用它是正确的 :) 你可以使用接口引用类
    猜你喜欢
    • 1970-01-01
    • 2016-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-05
    • 1970-01-01
    • 2012-08-07
    相关资源
    最近更新 更多