When to use abstract classes and when to use interfaces
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
When to use interfaces or abstract classes? When to use both?
考虑这个
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | public abstract class Flat { //some properties public void livingRoom(){ //some code } public void kitchen(){ //some code } public abstract void bedRoom(); } An implementation class would be as follows: public class Flat101 extends Flat { public void bedRoom() { System.out.println("This flat has a customized bedroom"); } } |
或者,我可以使用接口而不是抽象类来实现以下相同的目的:
1 2 3 4 5 6 7 8 9 |
}
1 2 3 4 5 6 7 8 9 10 11 | interface BedRoomInterface { public abstract void bedRoom(); } public class Flat101 extends Flat implements BedRoomInterface { public void bedRoom() { System.out.println("This flat has a customized bedroom"); } } |
现在的问题是:对于这个设置,为什么要选择使用接口(或)为什么要选择使用抽象类?
一般来说,当您需要一个地方来放置可以在实现之间重用的公共逻辑时,可以使用
还有一些例外,通常与设计模式密切相关。但保持简单。