[JAVA] Allez Interface Forest

Interface </ b>, l'une des trois syntaxes majeures </ b> que j'ai arbitrairement définies lorsque j'ai commencé mes études.

Quand cette personne est-elle utilisée? </ b> Est-ce vraiment la syntaxe nécessaire? </ b>

Je vais démêler cela.

Au fait, cela n'a pas d'importance, mais les trois principales syntaxes restantes sont étendues et abstraites. Jeunesse. </ font>

Qu'est-ce que l'interface?

Interface est un mot anglais qui représente la surface de contact et la surface intermédiaire. (De Wikipedia) L'USB connecté à un ordinateur personnel est également appelé une interface </ b> pour connecter l'ordinateur personnel à divers périphériques. En effet, il est trop gênant de connecter divers périphériques s'ils ont leurs propres connecteurs, ils sont donc normalisés selon la norme appelée USB.

Avec ce genre de sentiment, vous pouvez réaliser des entrées et des sorties communes à d'autres classes en implémentant Interface. Faisons le.

Comment créer une interface

Utilisez le mot-clé ʻinterface` pour définir une interface en Java. Seules les variables membres et les méthodes abstraites peuvent être définies dans Interface.

Les variables membres sont automatiquement traitées comme «public static final», elles ne peuvent donc être utilisées que comme constantes.

Étant donné que la méthode est une méthode abstraite, vous ne pouvez pas définir le processus dans Interface, vous ne pouvez définir que le nom de la méthode, la valeur de retour et l'argument formel.

ExampleInterface.java


interface ExampleInterface{
  int getNum();
  void setNum(int num);
}

Donc, du côté de la classe qui l'utilise, je vais l'implémenter en utilisant le mot-clé ʻimplements. ʻImplements signifie "implémentation".

ExampleClass.java


class ExampleClass implements ExampleInterface{
  int num = 10;

  @Override
  int getNum(){
    return num;
  }

  @Override
  void setNum(int num){
    this.num = num;
  }
}

Pour répéter ce qui précède, la méthode définie dans Interface devient une méthode abstraite sans autorisation, elle doit donc être remplacée.

Pour le moment comme ça, j'ai essayé d'implémenter le getter et le setter que j'ai écrit jusqu'à présent en Interface.

Utilisation pratique de l'interface

Peut être coulé

Vous pouvez également convertir l'interface comme vous l'avez fait lors de l'héritage.

Pour le moment, j'ai fait un cours approprié. L'interface utilise la précédente.

ExampleInterface.java


interface ExampleInterface{
  int getNum();
  void setNum(int num);
}

Faites des classes A et B. appropriées.

ClassA.java


class ClassA implements ExampleInterface{
  int num = 10;

  @Override
  int getNum(){
    return num;
  }

  @Override
  void setNum(int num){
    this.num = num;
  }
}

ClassB.java


class ClassB implements ExampleInterface{
  int num = 20;

  @Override
  int getNum(){
    return num;
  }

  @Override
  void setNum(int num){
    this.num = num;
  }
}

Alors, souhaitez-vous déplacer celui-ci? J'essaierai de produire correctement sans utiliser les avantages d'Interface.

RunClass.java


class RunClass{
  public static void main(String[] args){
    ClassA classA = new ClassA();
    ClassB classB = new ClassB();

    printNum(classA);
    printNum(classB);
  }

  static void printNum(ClassA classA){
    System.out.println(classA.getNum());
  }

  static void printNum(ClassB classB){
    System.out.println(classB.getNum());
  }
}

Je l'ai beaucoup écrit pour obtenir l'explication. Ce n'est pas grave car il n'y a que deux classes définies maintenant, mais ce serait difficile s'il y avait plus de classe C et de classe D.

Maintenant, convertissons-le en type Interface et traitons-le </ b>!

RunClass.java


class RunClass{
  public static void main(String[] args){
    ClassA classA = new ClassA();
    ClassB classB = new ClassB();

    printNum(classA);
    printNum(classB);
  }

  static void printNum(ExampleInterface instance){
    System.out.println(instance.getNum());
  }
}

Toutes les classes qui implémentent ʻExampleInterface comme celle-ci peuvent maintenant être traitées par la méthode printNum`.

Je pense qu'il peut être utilisé lorsque vous voulez promettre que toutes les classes que vous avez implémentées ont une méthode avec un nom commun </ b>.

Peut être implémenté plusieurs fois

L'héritage de mot-clé ʻExends` ne pouvait pas hériter de deux ou trois classes, mais Interface peut </ b>.

Non seulement USB, mais également des bornes analogiques pour insérer des écouteurs et des ports LAN sont disponibles sur les PC. Avec ce genre de sensation, vous pouvez le rendre compatible avec diverses entrées et sorties en ajoutant Interface.

Par conséquent, je pense que l'interface doit être utilisée uniquement pour implémenter des méthodes liées aux entrées / sorties, et ne doit pas être utilisée pour écrire le traitement gorigori.

Si une classe a trop de fonctionnalités, vous ne devriez pas le faire car vous vous retrouverez avec plus de 1000 lignes dans un fichier et vous ne saurez pas où ni ce que vous avez écrit.

Donc, si vous voulez implémenter le traitement gorigori, vous devriez envisager d'en faire une classe abstraite, et si vous voulez hériter d'une autre classe, vous devriez envisager de séparer les fonctions et de créer une autre classe en premier lieu.

Vous êtes en charge de ○○! Je pense qu'il vaut mieux pouvoir l'exprimer en un mot ...?

Shime

L'utilisation appropriée d'Interface et de la classe abstraite semble être un problème auquel tout le monde est confronté une fois, donc jusqu'à ce que je trouve la solution optimale pour moi-même, je m'entends avec les enseignants de Google et lis l'entrée de Qiita et les articles de Naughty Engineer School. Je pense que je devrais le voir.

c'est tout!

référence

[Introduction à Java] Résumé de l'utilisation de l'interface

Recommended Posts