【问题标题】:Why won't my interface typed objects preform methods that are not declared in the interface?为什么我的接口类型对象不会执行未在接口中声明的方法?
【发布时间】:2012-04-21 12:49:09
【问题描述】:

这是我遇到问题的代码:

界面:

public interface anInterface {

    void printSomething();

}

实现接口的类:

public class aClass implements anInterface {

    public aClass() {

    }

    public void printSomethingElse() {
         System.out.println("Something else");
    }

    @Override
    public void printSomething() {
        System.out.println("Something");
    }
}

以及主要功能:

public static void main(String[] args) {
     anInterface object = new aClass();
     object.printSomething();   // works fine
     object.printSomethingElse();     // error
}

错误:找不到符号。 符号:方法 printSomethingElse();

谁能告诉我为什么这不起作用?

在 Java 中,当您有一个实现某个接口的类时,是否可以向该类添加方法,即使这些方法尚未在接口中声明?还是我必须声明我将在接口中使用的所有方法?

我在 C# 中也试过了,也没用。

我做错了什么?

谢谢!!!

【问题讨论】:

    标签: java class interface methods implements


    【解决方案1】:

    您必须在接口中声明在这种情况下要使用的所有方法。该界面对 printSomethingElse 一无所知,这就是您收到上述错误的原因。

    接口的目的是让您可以在多个相似的实现类中拥有一个通用的函数列表。例如,List 是一个接口,其中包含由不同类以各种方式实现的功能的“列表”,例如 LinkedList 使用双向链接列表来提供 ListArrayList 的功能,它使用这样做的动态扩展数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多