[Java débutant] À propos de l'abstraction et de l'interface

Aperçu

Je le publierai comme une critique de ** Abstract ** et ** Interface **.

Abstraction

Dans le module supérieur, déclarez les méthodes et les variables qui sont généralement implémentées dans le module inférieur et laissez l'implémentation au module inférieur. De plus, les classes abstraites ne peuvent pas être instanciées.

** - Avantages de l'abstraction **

Human.java


public abstract class Human{
  private String name;
  public Human(String name){
    this.name = name;
  }
  public String getName(){
    return name;
  }
  public void setName(String name){
    this.name = name;  
  }
  //Déclarez une méthode commune et laissez la mise en œuvre au module inférieur
  public abstract void talk();
  //Méthode qui ne fait rien
  public void tmp(){}
}

Japanese.java


public class Japanese extends Human{
  public Japanese(String name){
    super(name);
  }
  @Override
  public void talk(){
    System.out.println("Bonjour");
  }
}

American.java


public class American extends Human{
  public American(String name){
    super(name);
  }
  @Override
  public void talk(){
    System.out.println("Hello");
  }
}

Main.java


public class Main{
  public static void main(String[] args){
    //Human human = new Human("Yamada Taro");
    //Erreur de compilation car l'instance ne peut pas être créée

    Japanese jp = new Japanese("Yamada Taro");
    jp.talk();    //Bonjour
    American en = new American("TaroYamada");
    en.talk();    //Hello

  }
}

interface

Dans l'interface, vous pouvez déclarer une méthode à implémenter en commun comme dans l'abstraction, et laisser l'implémentation à la classe qui hérite de l'interface. Cependant, les champs sont traités différemment des classes abstraites.

** Fonctionnalités de l'interface **

Fondamentalement, il n'est pas permis d'implémenter des champs dans l'interface, mais seuls les champs avec ** public static final ** peuvent être déclarés, et il est automatiquement ajouté lorsque la déclaration de variable est lancée à partir du nom du type dans l'interface. Sera fait. Puisqu'il a un modificateur ** final ** qui ne peut pas être réaffecté, il doit être initialisé en même temps que la déclaration de variable.

Concernant les méthodes, les méthodes qui peuvent être déclarées dans l'interface sont limitées à celles qui sont ** public ** et ** abstract **, et sont automatiquement ajoutées lorsqu'elles sont déclarées à partir du type de retour.

Creature.java


public interface Creature{
  //public static final double PI = 3.14;
  double PI = 3.14; //Elle devient automatiquement une variable finale statique publique.
  
  //public abstract void breath();
  void breath();  //Cela devient automatiquement une méthode abstraite publique.
}

Résumé

Mon impression honnête est qu'il est difficile de bénéficier des avantages parce que j'ai peu d'expérience en développement avec l'héritage.

Recommended Posts

[Java débutant] À propos de l'abstraction et de l'interface
À propos de l'interface Java
Interface [Java]
À propos de l'interface, interface java
À propos de l'interface fonctionnelle Java
[Java] À propos de String et StringBuilder
À propos du package Java et de l'importation
À propos des méthodes Java statiques et non statiques
Différences entre Java "débutant" et Kotlin
À propos de Biocontainers fastqc et Java
java débutant 4
java (interface)
java débutant 3
[Java débutant] == opérateur et méthode equals
java débutant
interface [java]
[JAVA] Différence entre abstrait et interface
Java, interface pour partir du débutant
A propos des types primitifs et des types de référence Java
Ceci et cela à propos de Base64 (Java)
[Java] J'ai réfléchi aux mérites et aux utilisations de "interface"
Java pour les débutants, les variables et les types
[À propos de JDBC qui connecte Java et SQL]
[Java / Swift] Comparaison de l'interface Java et du protocole Swift
[Java débutant] À propos de l'initialisation d'un tableau multidimensionnel
[Java] Contenu de l'interface de collection et de l'interface de liste
[Java] À propos des fonctionnalités de Java 12
[Java] À propos des tableaux
interface et résumé
Quelque chose à propos de java
Où est Java
À propos des fonctionnalités Java
Exercices pour les débutants Java
À propos des threads Java
À propos de la classe Java
Java et JavaScript
À propos des tableaux Java
XXE et Java
[Java] Interface fonctionnelle
À propos de l'héritage Java
Héritage et interface.
À propos de Java Var
À propos de Java Literal
À propos des commandes Java
Exercice Java "Débutant"
[ev3 × Java] Interface, implémentation et héritage (traitement événementiel)
À propos des types de données Java (en particulier des types primitifs) et des littéraux
Créer un environnement Java et afficher hello world [Débutant]
À propos de la sortie du journal Java
Java, à propos d'un tableau à deux dimensions
Commentaire: à propos de l'interface
À propos de [Java] [StreamAPI] allMatch ()
Getter et Setter (Java)
À propos de la classe Java StringBuilder
Interface appelable en Java
[Java] Thread et exécutable
interface de type de fonction standard java
Java vrai et faux
[Java] À propos de la classe Singleton