为什么我的接口类型对象不会预先形成未在接口中声明的方法?

时间:2012-04-09 02:20:41

标签: java class interface methods implements

以下是我遇到问题的代码:

界面:

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

有谁可以告诉我为什么这不起作用?

当你有一个实现某个接口的类时,是否有可能向该类添加方法,即使这些方法尚未在接口中声明?或者我是否必须声明我将在界面中使用的所有方法?

我也在C#中尝试过它,但也不起作用。

我做错了什么?

感谢!!!

1 个答案:

答案 0 :(得分:3)

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

接口的目的是让您可以在多个类似的实现类中拥有一个通用的函数列表。例如,List是一个接口,其中包含由不同类以不同方式实现的函数“列表”,例如LinkedList使用双向链接列表来提供ListArrayList的功能。 {{1}}使用动态扩展数组来执行此操作。