2012-03-09 4 views
1

Possible en double:
When to use interfaces or abstract classes? When to use both?Quand utiliser les classes abstraites et quand utiliser les interfaces

Tenir compte de cette

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"); 
     }   

} 

Sinon je peux utiliser une interface au lieu d'un résumé classe pour atteindre le même but comme suit:

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"); 
     } 
} 

Maintenant, la question est la suivante: Pour cette configuration, pourquoi choisir d'utiliser une interface (ou) pourquoi devrais-je choisir d'utiliser une classe abstraite?

Répondre

4

Généralement parlant, utilisez abstract classes lorsque vous voulez un endroit pour mettre la logique commune qui peut être réutilisée entre les implémentations. Sinon, utilisez un Interface.

Ensuite, il existe un certain nombre d'exceptions, souvent étroitement liées aux modèles de conception. Mais gardez les choses simples.

Questions connexes