请bang老师帮忙看一下用法是否正确

10-02-23 sjskkjss
         

public interface C{

void print();

}

//CImp 的方法是接口C的实现但并没有直接写成CImp implements C

abstract public class CImp{

public void print(){

...

}

}

public class CClass extends CImp{}

public interface A extends C{

void printA();

}

public interface B extends C{

void printB();

}

public class AIMP extends CImp implements A{

public void printA(){}

}

public class BIMP extneds CImp implements B{

public void printB(){}

}

调用

C c = new CClass();

c.print();

A a = new AIMP();

a.printA();

a.print();

B b = new BIMP();

b.printA();

b.print();

我想问的就是抽象类CImp并没有直接实现接口C这样写符不符合规范

主要就想解决一个公共接口被几个类实现其中一个类要增加一个方法 通过接口怎么调用的问题望指点

[该贴被sjskkjss于2010-02-23 13:05修改过]

         

1
banq
2010-02-23 16:50

2010年02月23日 13:01 "sjskkjss"的内容
抽象类CImp并没有直接实现接口C这样写符不符合规范

当然不规范,名字是CImp,表示是C的实现类,却不真正实现。

>想解决一个公共接口被几个类实现其中一个类要增加一个方法 通过接口怎么调用的

不知什么意思,一个公共接口被几个类实现,如果其中一个实现子类要增加新方法,原则是首先不要破坏原来结构,使用GoF设计模式中结构类模式解决。

[该贴被banq于2010-02-23 16:52修改过]

sjskkjss
2010-02-23 17:31

谢谢banq老师的指导现改成如下可以形式吗?

public interface C{

void print();

}

abstract public class CImp implements C{

public void print(){

...

}

}

public interface A extends C{

void printA();

}

public class AIMP extends CImp implements A{

public void printA(){}

}

调用

A a = new AIMP();

a.printA();

a.print();