类似于这种
 interface Animal
 {
 void run1();
 void run2();
 void run3();
}

class sheep implements Animal
{
public run1()
{
代码片段1
}

public run2()
{
代码片段2
}

public run3()
{
代码片段3
}
}

class pig implements Animal
{
public run1()
{
代码片段1
}

public run2()
{
代码片段2
}

public run3()
{
代码片段3
}
}其中类sheep和pig中代码片段1、2、3分别是相同的
这个要怎么优化?在子类和接口中间加一层抽象类实现部分相同方法?

解决方案 »

  1.   

    既然代码片段都相同,何不设置一个非抽象类Animal来代替接口?
      

  2.   


    public interface Test{
    public default void run(){
    System.out.println("default");
    }
    }当某个接口的实现类对接口中的某个方法行为一致的时候可以考虑在接口中声明默认实现.
    对于特殊子类再进行重写.
      

  3.   

    楼主你不是很明白么?还问啥。4楼的方法似乎jre1.8版本才支持。之前的版本接口是决不允许有实现方法的。
      

  4.   

    写一个类来实现Animal接口,然后让pig跟sheep继承这个类
      

  5.   

    写一个抽象类实现实现Animal接口,然后让pig跟sheep继承这个类,这样做法是比较好的
      

  6.   

    我说得不够详细其实Animal应该还有其他方法,这两个方法在子类中是不一样的