使用继承避免代码重复

Bun*_*uni 2 java inheritance

我来自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" );
  }
}
Run Code Online (Sandbox Code Playgroud)

T.J*_*der 6

通常,这是使用聚合而不是继承的地方,方法是让类具有用于调试日志记录的成员(通常是私有).如果类必须实现接口以及在内部使用调试日志记录,那么您可以让它们执行此操作,然后将每个Debug接口方法交给私有实例.

但是,如果您正在使用Java 8,则还有另一种选择:请参阅Pablo的默认接口方法的答案,它是一种Multiple Inheritance Lite.