当前位置: 首页 > 面试题库 >

Java接口-它们的作用是什么?

左丘昊天
2023-03-14
问题内容

我不久前才开始学习Java。
我遇到过Interfaces我知道如何使用它,但仍然不太了解它的想法。
据我了解,interfaces通常是由类实现的,然后必须实现在接口中声明的方法。
问题是-真正的意义是什么?仅将接口中的方法实现为普通的类方法会更容易吗?使用接口的确切优势是什么?

希望有人可以简化它!:)
预先感谢!


问题答案:

接口允许您在运行时提供不同的实现,注入依赖项,单独的关注点,使用不同的实现进行测试。

只需将接口视为类保证实现的契约即可。实现该接口的具体类无关紧要。不知道这是否有帮助。

想出一些代码可能会有所帮助。这并不能解释界面的所有内容,请继续阅读,但我希望这可以帮助您入门。这里的重点是您可以更改实现…

package stack.overflow.example;

public interface IExampleService {
void callExpensiveService();
}

public class TestService implements IExampleService {

@Override
public void callExpensiveService() {
    // This is a mock service, we run this as many 
    // times as we like for free to test our software

}
}

public class ExpensiveService implements IExampleService {
@Override
public void callExpensiveService() {
    // This performs some really expensive service,
    // Ideally this will only happen in the field
    // We'd rather test as much of our software for
    // free if possible.
}
}


public class Main {

/**
 * @param args
 */
public static void main(String[] args) {

    // In a test program I might write
    IExampleService testService = new TestService();
    testService.callExpensiveService();

    // Alternatively, in a real program I might write
    IExampleService testService = new ExpensiveService();
    testService.callExpensiveService();

    // The difference above, is that we can vary the concrete 
    // class which is instantiated. In reality we can use a 
    // service locator, or use dependency injection to determine 
    // at runtime which class to implement.

    // So in the above example my testing can be done for free, but 
    // real world users would still be charged. Point is that the interface
    // provides a contract that we know will always be fulfilled, regardless 
    // of the implementation.

}

}


 类似资料:
  • 问题内容: 我正在研究Swing程序中文本组件的结构。 据我了解,本质上分为视图和模型。该模型是实现的类的实例,该类包含所有文本并提供操作文本的方法,而View则以可视方式呈现文本。 但是我不知道使用an的确切位置,方式和原因。我不确定是否封装(“拥有”)模型(),或者文档是否封装了模型。而且不确定所有这些视图在哪里适合。 有两个问题: 1- 请描述视图之间的关系和在。什么封装了什么,什么与什么相

  • 问题内容: 今天,我浏览了该站点上的一些问题,发现提到了 以单例模式使用的这种解决方案声称具有线程安全性的优点。 我从未使用过,并且使用Java编程已经有两年多了。显然,他们改变了很多。现在,他们甚至在自己内部提供了对OOP的全面支持。 现在为什么要在日常编程中使用枚举?为什么? 问题答案: 当变量(尤其是方法参数)只能从一小部分可能的值中取出一个时,应始终使用枚举。例如类型常量(合同状态:“永久

  • 问题内容: 与这个问题相对应:Java中的接口是什么? 问题答案: 接口是抽象类的一种特殊形式,它不实现任何方法。在Java中,你可以这样创建一个接口: 由于该接口无法实现任何方法,因此这意味着整个事物(包括所有方法)都是公共的和抽象的(Java术语中的抽象含义是“未由此类实现”)。因此,上面的接口与下面的接口相同: 要使用此接口,你只需要实现该接口。许多类可以实现一个接口,而一个类可以实现许多接

  • 问题内容: 并且它的jQuery特定表弟一直以Javascript代码弹出。 这些构造如何工作,它们可以解决什么问题? 实例赞赏 问题答案: 随着JavaScript框架的日益普及,该标志已在许多不同的场合使用。因此,为减轻可能的冲突,可以使用以下构造: 具体来说,这是一个 匿名 函数声明,该声明 立即 通过将主要jQuery对象作为参数来执行。在该函数内部,您可以用来引用该对象,而不必担心其他框

  • 问题内容: 我正在学习Java,只是发现接口可以包含公共静态字段和最终字段。到目前为止,我还没有看到这些示例。这些接口常量有哪些用例,我可以在Java标准库中看到吗? 问题答案: 将静态成员放入接口(并实现该接口)是一种不好的做法,甚至还有一个名称,即Constant Interface Antipattern,请参见Effective Java,第17项: 恒定接口模式是对接口的不良使用。类内部

  • 本文向大家介绍什么是数组,它的作用是什么?,包括了什么是数组,它的作用是什么?的使用技巧和注意事项,需要的朋友参考一下 数组是一个数据容器,其中包含固定长度的同类数据类型的元素。它用于存储相同数据类型的元素。 示例 输出结果