Java à partir de débutant, héritage

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.

introduction

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.

environnement

Langue: Java11, JDK13.0.2 Environnement d'exploitation: Windows 10

Extension de classe

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".

Est-ce super ou sous-marin?

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 ().

J'ose utiliser le constructeur parent

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.

Introverti que privé, sociable que privé

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.

À la fin

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.

référence

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

Java à partir de débutant, héritage
Java à partir du débutant, remplacer
Java, instance à partir du débutant
Java, constructeur de surcharge à partir du débutant
Java pour les débutants, les variables et les types
Java à partir du débutant, imbriqué / break / continue
Java, instruction if / instruction switch à partir du débutant
Java, pour instruction / while à partir du débutant
Java à partir du débutant, déclaration de classe / génération d'objet
La vie Java à partir de zéro
java débutant 4
[Java] Héritage
java débutant 3
Héritage Java
java débutant
Héritage Java
java (héritage)
Java, classe abstraite pour commencer par débutant
Java, interface pour partir du débutant
[Java] Héritage de classe
IntelliJ à partir de 1
Java à partir du débutant, opérateur logique / opérateur conditionnel
Exercices pour les débutants Java
À propos de l'héritage Java
Exercice Java "Débutant"
Pour les ingénieurs Java qui démarrent Kotlin à partir de maintenant
Appeler Java depuis JRuby
Changements de Java 8 à Java 11
Somme de Java_1 à 100
Évaluer la source Java à partir de Java
Résumer l'héritage Java (Java Silver 8)
Picture-in-picture à partir d'iOS14
Accédez à API.AI depuis Java
À propos de l'héritage (Java Silver)
De Java à Ruby !!
[Java] Mémo d'héritage implicite
Mémo d'apprentissage Java (héritage)
[Java] Plates-formes parmi lesquelles choisir pour le développement Java à partir de maintenant (2020)
Résumé d'héritage avancé, interface -java
Migration de Cobol vers JAVA
Héritage de l'interface de l'historique d'apprentissage JAVA
Révision et résumé de Progate Java (débutant)
Création d'index Elastic Search à partir de Java
Nouvelles fonctionnalités de Java7 à Java8
Connectez-vous de Java à PostgreSQL
[Java] Qu'est-ce que l'héritage de classe?
java (héritage du principe is-a)
Utilisation de Docker depuis Java Gradle
De Java inefficace à Java efficace
JavaScript vu de Java
[Débutant] Description du "tableau" de base Java
Exécuter des instructions non-Java à partir de Java
Résolvez AtCoder Beginner Contest 151 avec Java
Jour 2 orienté objet Muscle Java ~ Héritage ~
Appeler la classe scellée de Kotlin depuis Java
Différences entre Java "débutant" et Kotlin
Résolvez AtCoder Beginner Contest 150 avec Java
Coder Java depuis Emacs avec Eclim
Deep Learning Java from scratch 6.4 Régularisation
Résolvez AtCoder Beginner Contest 153 avec Java
[Java débutant] À propos de l'abstraction et de l'interface