java中的常用接口方法实现
Common interface method implementation in java
我有 2 个 class 实现了特定接口。
我想实现一个将由 2 classes.
共享的方法
我可以将该方法实现添加到接口 class,然后从 2 classes 调用该方法吗?
例如:
public interface DM
{
public static void doSomething() {
System.out.println("Hello World");}
}
public class A implements DM
{
doSomething();
}
public class B implements DM
{
doSomething();
}
}
这可行吗?
这样做的正确方法是什么?
首先,interface
是 而不是 class。接下来,是的,有了java8的default methods,就可以在interfaces,
中添加方法定义了
是的,如果您使用的是 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's documentation on the feature
如果您能够对代码进行更广泛的更改,您可以使用的另一种策略是使用 abstract class
而不是接口,并让您的实现 classes extend
而不是 class。界面中任何您不想为其编写默认值的方法都应标记为 abstract
.
public abstract class DM
{
public void doSomething() { System.out.println("Hello World");}
public abstract void doSomethingElse();
}
public class A extends DM
{
doSomething();
}
如果您想使用接口但不能使用默认值,您也可以结合使用这些方法t/won:
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 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");
}
}
我有 2 个 class 实现了特定接口。
我想实现一个将由 2 classes.
共享的方法
我可以将该方法实现添加到接口 class,然后从 2 classes 调用该方法吗?
例如:
public interface DM
{
public static void doSomething() {
System.out.println("Hello World");}
}
public class A implements DM
{
doSomething();
}
public class B implements DM
{
doSomething();
}
}
这可行吗?
这样做的正确方法是什么?
首先,interface
是 而不是 class。接下来,是的,有了java8的default methods,就可以在interfaces,
是的,如果您使用的是 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's documentation on the feature
如果您能够对代码进行更广泛的更改,您可以使用的另一种策略是使用 abstract class
而不是接口,并让您的实现 classes extend
而不是 class。界面中任何您不想为其编写默认值的方法都应标记为 abstract
.
public abstract class DM
{
public void doSomething() { System.out.println("Hello World");}
public abstract void doSomethingElse();
}
public class A extends DM
{
doSomething();
}
如果您想使用接口但不能使用默认值,您也可以结合使用这些方法t/won:
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 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");
}
}