例如
public class LinkedList extends AbstractSequentialList implements List, Cloneable, Serializable其中AbstractSequentialList是实现了List的
public class LinkedList extends AbstractSequentialList implements List, Cloneable, Serializable其中AbstractSequentialList是实现了List的
BasaraTracy(不屈斗志) :
如果每个都要复写,AbstractClassA实现的方法,不就浪费了
public interface InterfaceA {
void m1();
void m2();
}//AbstractClassA.java
public abstract class AbstractClassA implements InterfaceA {
public void m1() { } //实现了m1, 但没有实现m2
}//ClassA.java
public class ClassA extends AbstractClassA {
public void m2() { } //只实现父类中没有实现的m2就行了, 因为m1已经在父类中实现了
}//ClassB.java
public class ClassB extends AbstractClassA implements InterfaceA {
public void m1() { } //尽管m1已经在父类中实现了, 但仍然需要再次实现
public void m2() { } //因为再次implements了接口
}
public class ClassB extends AbstractClassA implements InterfaceA {
public void m1() { } //尽管m1已经在父类中实现了, 但仍然需要再次实现
public void m2() { } //因为再次implements了接口
}
我写成
public class ClassB extends AbstractClassA{
public void m1() { } //我直接重写这个方法啊
public void m2() { }
}
同样可以达到效果啊
2.靠Coder自律做不到么?
请看以下代码:public interface InterfaceA{
public void doSomeThing1();
public void doSomeThing2();
}
public abstract class AbstractClassA implements InterfaceA{
public void doSomeThing1(){
}
}public class ClassA extends AbstractClassA implements InterfaceA{
public void doSomeThing2(){
}
public static void main(String[] src){
new ClassA();
}
}此段代码可以正常运行,也就是说我不用在ClassA中强制重构doSomeThing1()这个方法,
个人认为就我现在的理解能力,这样写是多此一举
错了,只要父类有实现就可以了。同意楼上,这样写比较直观,对于这个类的实用者来讲,比较明了,尤其是不看javadoc而直接读代码的人。另外,我觉得这样的话也可以保证接口的稳定,比如extends的父类不再实现该接口了,子类还可以不用变更。不知有没有道理,我估计这也是一种best practice吧.