添加方法或不添加方法到接口?

Kat*_*esa 11 java default-method

在Java 8中,除了需要在具体类中实现的声明之外,我们还可以为接口中的方法提供默认实现.

在接口中使用默认方法是一个好的设计还是最佳实践,或者Java 8是否只是为了在旧的API上提供更多支持?我们应该从新的Java 8项目中使用默认方法开始吗?

请帮我详细了解这里的优秀设计.

kha*_*iab -1

在早期的 java 版本中这是不可能的,因为抽象类只能使用具体和声明的方法,但是。\nJava 8 引入了 \xe2\x80\x9cDefault Method\xe2\x80\x9d 或(Defender 方法)新功能,它允许开发人员在不破坏这些接口现有实现的情况下向接口添加新方法。它提供了灵活性,允许接口定义实现,在具体类无法提供该方法的实现的情况下,接口定义实现将用作默认值。

\n\n

让我们考虑一个小例子来理解它是如何工作的:

\n\n
public interface oldInterface {\n    public void existingMethod();\n        default public void newDefaultMethod() {\n        System.out.println("New default method"\n              " is added in interface");\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

以下类将在 Java JDK 8 中成功编译

\n\n
public class oldInterfaceImpl implements oldInterface {\n    public void existingMethod() {\n        // existing implementation is here\xe2\x80\xa6\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

为什么使用默认方法?\n重新设计现有的 JDK 框架总是非常复杂。修改 JDK 框架中的一个接口会破坏扩展该接口的所有类,这意味着添加任何新方法都可能会破坏数百万行代码。因此,引入了默认方法作为一种以向后兼容的方式扩展接口的机制。

\n\n

笔记

\n\n

然而,我们可以实现这种向后兼容性。但始终建议仅使用带有声明的接口,因为这是它们最适合的用途。

\n\n

举个简单的例子,如果您有一个,您interface Human_behaviour可以利用该接口的所有操作,例如to_Walk();\n to_Eat(),例如在每个实现类中以独特的方式为每个人类对象to_Love()to_Fight()

\n\n

一个人可以使用剑进行战斗,另一个物体可以使用枪等进行战斗。\n因此界面是一种祝福,但可以始终根据需要使用。

\n