She*_*nny 9 java static-methods interface java-8
我有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();
}
}
Run Code Online (Sandbox Code Playgroud)
这可行吗?
这样做的正确方法是什么?
谢谢
是的,如果您使用的是Java 8,则可以创建一个default
实现,如下所示:
public interface DM
{
default void doSomething() { System.out.println("Hello World");}
}
Run Code Online (Sandbox Code Playgroud)
或者,如果它应该是静态的:
public interface DM
{
static void doSomething() { System.out.println("Hello World");}
}
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅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();
}
Run Code Online (Sandbox Code Playgroud)
如果您想使用接口但不能/不会使用默认值,您也可以组合这些方法:
public abstract class DMImpl impelements DM
{
@Override
public void doSomething() { System.out.println("Hello World");}
}
public class A extends DM
{
doSomething();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4240 次 |
最近记录: |