[英]Common interface method implementation in java
我有 2 个实现特定接口的类。
我想实现一个由 2 个类共享的方法。
我可以将该方法实现添加到接口类,然后从 2 个类调用该方法吗?
例如:
public interface DM
{
public static void doSomething() {
System.out.println("Hello World");}
}
public class A implements DM
{
doSomething();
}
public class B implements DM
{
doSomething();
}
}
这可行吗?
这样做的正确方法是什么?
是的,如果您使用的是 Java 8,您可以创建一个default
实现,如下所示:
public interface DM
{
default void doSomething() { System.out.println("Hello World");}
}
或者,如果它应该是静态的:
public interface DM
{
static void doSomething() { System.out.println("Hello World");}
}
有关更多信息,请参阅有关该功能的 Oracle 文档
如果您能够对代码进行更广泛的更改,您可以使用的另一种策略是使用abstract class
而不是接口,并让您的实现类extend
该类。 您不想为其编写默认值的接口中的任何方法都应标记为abstract
。
public abstract class DM
{
public void doSomething() { System.out.println("Hello World");}
public abstract void doSomethingElse();
}
public class A extends DM
{
doSomething();
}
如果您想使用接口但不能/不会使用默认值,您也可以结合使用这些方法:
public abstract class DMImpl impelements DM
{
@Override
public void doSomething() { System.out.println("Hello World");}
}
public class A extends DM
{
doSomething();
}
您可以使用 Java 8 创建一个default
方法。它有一些限制,但对于一些常见的共享功能很有用。
https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html
interface DM {
default public void doSomething() {
System.out.println("Hi");
}
}
首先, interface
不是 class 。 接下来,是的,使用 java 8 的默认方法,您可以向接口添加方法定义,
你可以试试这个
interface DM
{
public void doSomething();
}
class A implements DM
{
public void doSomething()
{
System.out.println("Hello World");
}
}
class B implements DM
{
public void doSomething()
{
System.out.println("Hello World");
}
}
class Test111
{
public static void main(String args[])
{
System.out.println("Hello");
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.