たとえば、不動産ビルダーは多くのアパートを備えたアパートを建設しています。寝室を除いて、アパートのすべての部屋は同じデザインです。ベッドルームのデザインは、アパートを所有する人々のために残されています。ベッドルームは、フラットごとに異なるデザインにすることができます。
abstract
私は以下のようなクラスを通してこれを達成することができます:
public abstract class Flat
{
//some properties
public void livingRoom(){
//some code
}
public void kitchen(){
//some code
}
public abstract void bedRoom();
}
}
implementation
クラスは次のようになります。
public class Flat101 extends Flat
{
public void bedRoom() {
System.out.println("This flat has a customized bedroom");
}
}
interface
または、クラスの代わりにabstract
次のような同じ目的を達成するために使用できます。
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");
}
}
ここでの質問は次のとおりです。このために、なぜinterface
(または)abstract
クラスを使用することを選択する必要があるのですか?