我来自C ++背景,其中多重继承不是问题。 Java中的Hoewever我只能使用类来继承或实现接口。 我有多个类已经扩展了另一个类。但是所有这些类应该共享相同的调试接口/类。 如何在不多次复制调试逻辑的情况下实现此类行为?
考虑我目前的设置:
public interface Debug
{
public abstract void log();
}
public class ClassA extends AnotherBaseClass implements Debug
{
public boolean doDebug = false;
public void log()
{
if( doDebug )
System.out.println( "LOG" );
}
}
public class ClassB implements Debug
{
public boolean doDebug = false;
public void log()
{
if( doDebug )
System.out.println( "LOG" );
}
}
答案 0 :(得分:6)
通常,这是使用聚合而不是继承的地方,方法是让类具有用于调试日志记录的成员(通常是私有)。如果类具有来实现接口以及在内部使用调试日志记录,那么您可以让它们执行此操作,然后将每个Debug
接口方法交给私有实例。< / p>
如果您正在使用Java 8,那么您还有另一个选项:see Pablo's answer用于默认的接口方法,它们是多重继承精简版。
答案 1 :(得分:4)
如果您使用的是Java 8,则有一项新功能可满足您的要求:您可以使用保留字default
在界面中提供默认实现。此新功能称为default methods。