用Java导入接口

时间:2017-06-27 19:41:08

标签: java interface

我正在一个包含以下界面

的项目中工作
import ListIF;

public interface PlayListIF {

    public ListIF<Integer> getPlayList();

    public void addListOfTunes(ListIF<Integer> lT);

    public void removeTune(int tuneID);

}

稍后,其他课程使用

import PlayListIF 
import PlayList

后来成了一个实例:

PlayListIF playlist = new PlayList();

导入接口或其实现之间有什么区别吗?导入界面有什么意义?

由于

3 个答案:

答案 0 :(得分:1)

导入实现(PlayList)和界面是因为代码行,

PlayListIF playlist = new PlayList();

引用实现的实例和接口。变量playlist可以是实现PlayListIF的类的任何实例。它恰好是PlayList类的一个实例,它可以是实现PlayListIF接口的任何类的实例。

答案 1 :(得分:-1)

您需要导入代码中引用的任何类/接口,以便编译器知道您所引用的内容。 在这种情况下,您指的是两者,因此您需要同时导入它们。

答案 2 :(得分:-2)

我可以尝试通过为java中的新手提供一个小例子来解释。 有一个类有一个方法保存(某事)。 你可能想保存“东西”

  1. 您的硬盘
  2. 一个FTP
  3. 通过网络服务
  4. 等...
  5. 基本上你会写一个服务(接口)

    public interface Saver{    
        public void save(MyData something);
    }
    

    你可以像

    一样实现这一点
    • FTPSaver
    • HardDriveSaver
    • 等...

    现在,当你实际使用你的Saver时,请说出

    public class A {
        private Saver saver;
        public A (Saver saver){
            this.saver = saver;}
    }
    

    您可以通过构造函数FTPSaver或HardDriveSaver注入,具体取决于您希望它在特定上下文中保存的方式,但对于A类,它使用Saver并不重要。

    TLDR:接口是一个合约,它显示了可用的方法,无论它们的实现如何,如果你实现了一个接口,你必须实现其中的所有方法。你应该使用接口作为属性而不是实现。

    希望有所帮助