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.
"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.
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.
D'abord de la méthode. Je les ai rassemblés dans un tableau pour chacune des «interfaces» et des «classes abstraites».
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. |
--Il semble que la méthode abstraite déclarée dans le cas de l'interface puisse également omettre le ʻabstract qualifier`.
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.
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 |
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é.)
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 final Va devenir. |
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é.
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. |
――Ce n'est pas différent de la méthode concrète!
--Interface
--Classe abstraite --Classe abstraite → ** Le résumé doit être écrit **
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