java何时使用抽象类以及何时使用接口
<>考虑这个Possible Duplicate:
When to use interfaces or abstract classes? When to use both?
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");
}
}
或者,我可以使用接口而不是抽象类来实现以下相同目的:
class Flat
{
public void livingRoom(){
System.out.println("This flat has a living room");
}
public void kitchen(){
System.out.println("This flat has a kitchen");
}
}
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");
}
}
现在的问题是:对于这种设置,为什么要选择使用接口(或者)为什么要选择使用抽象类
# 1 楼答案
通常说来,当您想要放置可在实现之间重用的公共逻辑时,请使用
abstract
类。否则,请使用Interface
还有一些例外,通常与设计模式密切相关。但要保持简单