[Java] [javaSliver] L'interface et les classes abstraites sont compliquées, je vais donc les résumer.

Objectif de cet article

Je passerai l'examen java silver la semaine prochaine, alors j'ai décidé d'écraser les parties ambiguës. Trions l '«interface» et la «classe abstraite» qui étaient un peu déroutantes. C'est le but de cet article.

Pourquoi j'étais confus

"Les méthodes abstraites sont déclarées avec abstract. Sinon, une erreur de compilation" est écrite ou Il est écrit que "s'il est omis, un résumé public est implicitement donné" ...

J'étais confus comme "ça? Un malentendu?" J'ai donc voulu l'organiser une fois et sortir du pétrin. Quand j'y pense maintenant, je pense que les méthodes abstraites, les classes abstraites et les interfaces ont été gâchées. Je pense.

Comparaison de règles

Nous avons compilé une liste de ce qui peut être défini dans les interfaces et les classes abstraites. Organiser. Je les ai organisés en les divisant en méthodes et variables de champ.

À propos de la méthode

D'abord de la méthode. Je les ai rassemblés dans un tableau pour chacune des «interfaces» et des «classes abstraites».

** Méthodes d'interface **

Que peut-on définir Modificateur d'accès Peut-il être omis? Autre
Méthode abstraite public Même si omis, public S'il s'agit d'une interface, vous pouvez omettre abstract.
méthode par défaut public Peut être omis * Il peut être défini après SE8.
méthode statique public or private Si omis, public * Il peut être défini après SE8.

point

--Il semble que la méthode abstraite déclarée dans le cas de l'interface puisse également omettre le ʻabstract qualifier`.

Pourquoi puis-je omettre le modificateur abstrait dans l'interface?

C'est une supposition à laquelle je suis personnellement arrivé ... Fondamentalement, seules les méthodes abstraites peuvent être définies dans l'interface (jusqu'à SE8), donc même si vous ne déclarez pas explicitement abstract, le compilateur le lira en l'air et ajoutera un résumé. J'ai décidé de réfléchir.

** Méthodes de classe abstraite **

Que peut-on définir Modificateur d'accès Peut-il être omis? Autre
Méthode abstraite En tous cas un résumé est requis. Les modificateurs d'accès peuvent être omis. Même si vous l'omettez, ce ne sera pas public
Méthode concrète En tous cas Peut être omis Les modificateurs d'accès peuvent être omis. Même si vous l'omettez, ce ne sera pas public

point

Pourquoi ne puis-je pas omettre le modificateur abstrait dans une classe abstraite?

Puisque les méthodes concrètes et les méthodes abstraites sont mélangées dans la classe abstraite, j'ai décidé de penser qu'il est nécessaire d'ajouter explicitement de l'abstrait pour ne pas être confondu. (C'est aussi une supposition à laquelle je suis personnellement arrivé.)

Puis les variables

interface

Type de champ Pouvez-vous le définir? Ne peux pas? La statique peut-elle être omise? Autre
Variables non statiques (variables d'instance) Ne peut pas être défini - Les interfaces ne peuvent pas être instanciées.
variable statique Il peut être défini, mais ce sera une constante Peut être omis Même si omispublic static finalVa devenir.

point

Vous n'avez pas à penser aux variables au moment de l'instanciation car l'interface ne peut pas être instanciée. C'est pourquoi il ne peut pas être défini. Ouaip. Convaincu. Il ne peut pas être instancié, mais il peut être traité comme un type, c'est donc un autre point compliqué.

** Classe abstraite **

Type de champ Pouvez-vous le définir? Ne peux pas? La statique peut-elle être omise? Autre
Variables non statiques (variables d'instance) Peut être défini Je n'en ai pas besoin en premier lieu Vous pouvez définir n'importe quel modificateur d'accès.
variable statique Peut être défini Ne peut pas être omis Si vous omettez static, cela devient une variable d'instance. Vous pouvez définir n'importe quel modificateur d'accès.

point

――Ce n'est pas différent de la méthode concrète!

Résumé

--Interface

--Classe abstraite --Classe abstraite → ** Le résumé doit être écrit **

à la fin

C'est tout un mémo pour moi, mais j'ai encore besoin de temps pour l'organiser comme ça. Si l'interprétation est différente ou incorrecte, nous vous prions de nous excuser pour la gêne occasionnée, mais nous vous serions reconnaissants de bien vouloir signaler m (_ _) m.

Recommended Posts

[Java] [javaSliver] L'interface et les classes abstraites sont compliquées, je vais donc les résumer.
Je suis tombé sur la version Java dans Android Studio, je vais donc le résumer
[JAVA] Quelle est la différence entre interface et abstract? ?? ??
Méthodes et classes abstraites Java
[Java] J'ai réfléchi aux mérites et aux utilisations de "interface"
J'ai réussi le test Java niveau 2, je vais donc laisser une note
[JAVA] Différence entre abstrait et interface
Les tableaux, les hachages et les symboles de Ruby sont déroutants, alors je les ai résumés.
J'ai essayé de résumer les méthodes de Java String et StringBuilder
Spécifiez l'ordre dans lequel les fichiers de configuration et les classes sont chargés dans Java
Une note sur les différences entre les interfaces et les classes abstraites en Java
Cours et méthodes abstraits d'histoire d'apprentissage JAVA
Je ne savais pas que les classes internes pouvaient être définies dans l'interface [Java]
Comprenez la différence entre les classes abstraites et les interfaces!
J'ai comparé les caractéristiques de Java et .NET
Résumer les différences entre l'écriture C # et Java
La gestion de Java Future est trop terne, je vais donc essayer diverses idées.
interface et résumé
J'ai passé Ruby Silver (juin 2020), je vais donc le résumer.
Classes et instances Java comprises dans la figure
J'ai résumé les types et les bases des exceptions Java
Utilisation correcte de la classe abstraite et de l'interface en Java
J'ai remarqué que je développe un FW Java dans le référentiel mono, donc je vais considérer l'opération.
[Java] Erreur d'appel de méthode lorsque l'héritage et l'implémentation de l'interface sont effectués en même temps