使用继承避免代码重复

时间:2014-06-06 09:04:34

标签: 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" );
  }
}

2 个答案:

答案 0 :(得分:6)

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

如果您正在使用Java 8,那么您还有另一个选项:see Pablo's answer用于默认的接口方法,它们是多重继承精简版。

答案 1 :(得分:4)

如果您使用的是Java 8,则有一项新功能可满足您的要求:您可以使用保留字default在界面中提供默认实现。此新功能称为default methods