J'étais gêné de ne pas pouvoir répondre à la spécification du langage Java lors de l'entretien, alors je vais le réapprendre.
| # | interface | abstract | 
|---|---|---|
| Caractéristiques | Utilisé lorsque vous souhaitez définir comme spécification de classe | Utilisé lorsqu'il existe une relation d'héritage et que vous souhaitez réutiliser le processus | 
| Relation avec la classe d'implémentation ou la classe concrète | Classe d'implémentationCANFonction abstraite | Classe de bétonISClasse abstraite | 
interface
//abstrait
public interface Cashier {
    void bill();
}
//Classe de mise en œuvre 1
public class CreditCart implements Cashier {
    public CreditCart(){
    }    
    @Override
    public void bill(){
        System.out.println("billed by credit card");
    }
}
//Classe d'implémentation 2
public class Cash implements Cashier {
    @Override
    public void bill() {
        System.out.println("billed by cash");
    }
}
abstract
//Classe abstraite
public abstract class Animal {
    String name;
    public Animal(String name) {
        this.name = name;
    }
    public void sleep() {
        System.out.println("Sleeping");
    }
    public abstract void speak();
}
//Classe de mise en œuvre 1
public class Human extends Animal {   
    public Human(String name) {
        super(name);
    }   
    @Override
    public void speak() {
        System.out.println(name + " speack human languages");
    }
}
//Classe d'implémentation 2
public class Cat extends Animal {
    public Cat(String name) {
        super(name);
    }   
    @Override
    public void speak() {
        System.out.println(name + " speack cat's language");
    }
}
| # | Même classe | Même paquet | Sublux | tout | 
|---|---|---|---|---|
| default | ◯ | ◯ | - | - | 
| private | ◯ | - | - | - | 
| protected | ◯ | ◯ | ◯ | - | 
| public | ◯ | ◯ | ◯ | ◯ | 
Recommended Posts