Cet article est un mémorandum. Bien qu'il s'agisse d'un contenu de niveau de référence, le code à publier dans cet article est ** Mauvais ** sont les choses principales. C'est dans le but de publier la partie qui s'est réellement trompée lors du codage et de la publier pour une réflexion personnelle. De plus, je n'aborderai pas la partie profonde ici, car je la passerai en revue plus tard tout en étudiant les questions d'examen Java Silver.
Langue: Java11, JDK13.0.2 Environnement d'exploitation: Windows 10
Il existe un mécanisme appelé ** interface ** qui est utilisé d'une manière similaire à la ** classe abstraite ** qui a été traitée la dernière fois. La classe abstraite était une sorte de classe et l'interface est créée dans le même but, mais la méthode de déclaration et d'implémentation est différente.
declareInterface.java
interface Felidae
{
String type = cats;
void meetsCats();
}
La déclaration habituelle de class
a été supprimée et remplacée par ʻinterface. Comme une classe, elle peut avoir des champs et des méthodes (** elle ne peut pas avoir de constructeur **), ** Les objets tels que
Felidae cat = new Felidae ();ne peuvent pas être créés **. De plus, puisque
void meets Cats ()est une méthode abstraite, il est nécessaire de ** préparer une méthode concrète ** par la classe qui implémente l'interface
Felidae` (override).
String type = cats;
est un champ d'interface, mais il s'agit d'une ** constante ** et ne peut pas être modifiée. Ceci est dû au fait que les champs de l'interface sont dans le même état que ceux de "public static final" (je ne sais toujours pas pourquoi).
inplementedFlidae.java
class Housecat inplements Felidae
{
void meetsCats()
{
System.out.println("J'ai trouvé un chat. Je pense que c'est un chat domestique quelque part.");
}
}
Au lieu de l'extension ʻextends, il s'agit de ʻimplements
, mais la forme est la même qu'auparavant.
Pourquoi avons-nous besoin d'une interface de méthode abstraite? J'aimerais tout faire avec des extensions de classe, mais Java ** n'autorise pas l'héritage multiple par plusieurs classes **. Il n'y a qu'une seule superclasse de parents. Il semble que vous ne devriez pas penser de la même manière que le diagramme du système que les humains pensent. J'ai vu quelques raisons à cela, mais il semble qu'il y ait une certaine profondeur ici, comme l'appel lorsque le nom de la méthode est usé et le problème du diamant. Un autre langage, «C ++», permet cet héritage multiple.
Cependant, il est difficile d'utiliser ce que vous avez préparé une fois. Par conséquent, au lieu de l'héritage multiple par classes, nous essayons de maintenir la simplicité en tant que langage en n'autorisant qu'un héritage multiple partiel par classes abstraites et interfaces. ** La mise en œuvre de l'interface peut être effectuée avec deux ou plus **. Vous pouvez également ** étendre l'interface elle-même ** et «étendre» les super-interfaces aux sous-interfaces.
En regardant la partie où l'héritage par extension est autorisé, je pense que Java est un langage qui est bon pour le développement descriptif. Connaître l'interface de classe déjà terminée et supposer que vous construirez une nouvelle classe tout en héritant de ses fonctions signifie que vous commencerez à étudier Java en connaissant d'abord les fonctions fournies par la bibliothèque standard.
J'écris et compile autant que possible des variables et des expressions moi-même, donc si je veux les citer complètement, je vais les décrire.
Easy Java 7e édition Java SE11 Silver Problem Collection (communément appelé Kuromoto)
Recommended Posts