Postscript 2020/3/16 Je l'ai corrigé car on m'a signalé dans les commentaires qu'il y avait une erreur dans la manière de nommer la classe.
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 ~~ ** L'erreur ** est le centre. 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 parce que je vais l'examiner plus tard tout en étudiant les questions d'examen Java Silver.
Langue: Java11, JDK13.0.2 Environnement d'exploitation: Windows 10
Toutes les classes que j'ai écrites jusqu'à présent ont été écrites indépendamment, mais j'ai dû définir des membres (champs et méthodes) à chaque fois. S'il s'agit de la classe Cat
, vous pouvez y arriver si vous faites de votre mieux, mais il n'est pas réaliste d'écrire toutes les classes avec des membres énormes (champs et méthodes) à chaque fois.
Java a une fonction ** class extend ** pour créer votre propre classe tout en héritant des membres de la classe existante.
extendedHousecat
class WildCat
{
protected double weight;
protected double height;
protected String name;
public static int sumCats = 0;
public wildCat()
{
weight = 0.0;
height = 0.0;
sumCats++;
System.out.println("Nyago, j'ai trouvé un autre chat.");
}
public WildCat(double we,double he)
{
weight = we;
height = he;
sumCats++;
System.out.println("Nyago, j'ai trouvé un autre chat.");
System.out.println("Le chat que j'ai trouvé est le poids" + weight + "kg, hauteur" + height + "Cela ressemble à cm.");
}
public void measureWeightHeight(double w,double h)
{
weight = w;
height = h;
System.out.println("J'ai mesuré ce chat.");
System.out.println("Poids" + weight + "kg, hauteur" + height + "Il y a cm.");
}
public static void countCats()
{
System.out.println("Dans tout" + sumCats + "J'ai trouvé un chat.");
}
}
//Yamaneko(Wildcat)Basé sur la classe de(Housecat)Faisons une classe.
class HouseCat extends WildCat
{
private String collorColor;
private String nickname;
public void callNickname(String s)
{
nickname = s;
System.out.printlm("Nouveau sur ce chat" + nickname + "Je lui ai donné un surnom.");
}
}
J'ai étendu la classe Yamaneko (WildCat
) pour créer une classe de chat domestique ( HouseCat, Cat
... il y a plusieurs noms). A ce moment, "Wildcat" et "HouseCat" ont une relation parent-enfant et deviennent respectivement "super classe" et "sous-classe".
La classe HouseCat
, qui est une extension de la classe WildCat
, hérite des membres (champs et méthodes) de sa classe parent WildCat
.
HouseCat cat1 = new HouseCat();
cat1.measureWeightHeight(5.0,50.5);
Ce faisant, vous pouvez créer un objet HouseCat
avec un poids de 5,0 kg et une hauteur de 50,5 cm.
Bien sûr, il a également des champs collorColor et surnom,
Vous pouvez également lui donner un surnom avec la méthode public void callNickname ()
.
La classe HouseCat
n'a pas de constructeur, mais si la sous-classe
ne fournit pas de constructeur, lorsque le ** constructeur sans argument ** du constructeur super class
crée un objet HouseCat
. Est automatiquement appelé. Cette fois, c'est public WildCat ()
.
Cependant, par exemple, si vous l'appelez comme super (8.0,60.8)
dans le constructeur, il sera appelé comme un chat domestique de 8,0 kg, 60,8 cm.
Avez-vous remarqué que les champs de la classe WildCat
sont différents de la normale? (En fait, je l'ai réparé après avoir écrit jusqu'à présent). «protected» est un modificateur qui signifie «accessible à partir de la même classe ou sous-classes que les enfants».
Si vous pouvez vous attendre à devenir une superclasse que vous souhaitez créer et développer de plus en plus de sous-classes, il sera plus facile à gérer plus tard si vous la définissez sur protected
.
En ce qui concerne les restrictions d'accès, nous nous abstenons de conditionner, mais nous l'omettons ici.
Que doit avoir la sous-classe héritée, où les membres de la superclasse sont-ils autorisés à accéder? Je souffre toujours de ces problèmes, donc la situation actuelle est que ma compréhension ici est encore faible. La référence Java 11 que j'ai traitée auparavant montrait également des «extensions» en désordre avec juste un petit coup d'œil. Il y a. Lorsque vous comprendrez ce pedigree, vous verrez probablement le vrai Java.
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 7ème édition Java SE11 Silver Problem Collection (communément appelé Kuromoto)
Java® Platform, Standard Edition & Java Development Kit Spécifications de l'API version 11
Recommended Posts