包含数组的接口,由不同的类使用

时间:2014-05-28 17:52:04

标签: java interface

我在UML中有以下架构:

Lecturer----implements-----Teaches (interface)
                             |   
Assistant-----implements-----|

所以我希望我的界面有一个教师可以讲课的课程列表,助理也可以这样做。到目前为止,我有以下代码:

public interface Teaches{
      public String[] coursesList=new String[3];
}

// class Teacher将couses输入coursesList,如下所示:

public class Teacher{
      //////
      private int i;
      //currently omitting some arguments in the constructor
      public Teacher(){
              i=1;
      }
      addCourse(String course){
              coursesList[i]=course;
              i++;
}

同样的程序由助理班完成,但是当我打印数据时,我注意到只列出了老师而不是助手的课程。有没有办法不发生这种情况?

由于

2 个答案:

答案 0 :(得分:2)

默认情况下,接口定义中的所有变量都是staticfinalSection 9.3 of the JLS covers this

  

接口主体中的每个字段声明都是隐式的public,static和final。允许为这些字段冗余地指定任何或所有这些修饰符。

这意味着实现Teaches接口的任何内容都可以访问相同的static数组coursesList。您的Teacher对象可能会覆盖coursesList数组的元素。

您应该将Teaches接口更改为抽象类,以便它可以拥有自己的实例变量courseList,每个具体的子类都可以访问它。

答案 1 :(得分:1)

接口不能有数据,只是说明。

如果您希望您的课程继承String[] coursesList,您宁愿让课程抽象