Qu'est-ce que l'héritage (étend)?
L'héritage est: une classe nouvellement définie est un phénomène d'obtention d'attributs et de méthodes des classes existantes. Cette classe existante est appelée la classe parent, et la classe qui obtient des propriétés et des méthodes de cette classe parent est appelée sous-classe.
Étenddemo1.java
La copie de code est la suivante:
/ * Quel est l'héritage * /
classe publique étenddemo1 {
public static void main (String [] args) {
Truck t = new Truck ();
t.size = 100; Il est préférable d'utiliser des constructeurs pour initialiser les variables des membres, ou fournir des interfaces set () et obtenir ().
// Une instance de la classe de camion hérite des attributs de taille et de couleur de la classe de voiture.
// quel camion a une boîte de chargement de plus que la voiture
}
}
Class Car {// Car
Taille int; // Taille du corps
Couleur des cordes;
}
camion de classe étend la voiture {// camion
String Packingbox; // Boîte à cargaison
}
Les avantages de l'héritage
1. Réutilisabilité du code amélioré
2. Soit une relation entre les classes crée une condition pour le polymorphisme.
Format hérité (étend)
La copie de code est la suivante:
La sous-classe de classe étend Superclass {
// Exécuter l'instruction;
}
Super Mots-clés
1. L'utilisation du mot-clé super est la même que celle-ci
2. Cela représente la référence de cette classe, et Super représente la référence de la classe parentale
3. Lorsqu'un membre du même nom apparaît dans la sous-classe et la classe parent, vous pouvez utiliser Super et ceci pour le distinguer.
Superdemo.java
La copie de code est la suivante:
/ * Utilisation de Super
* Résultat de sortie:
* super.i = 10, this.i = 20
* /
classe publique Superdemo {
public static void main (String [] args) {
new SubSlass (). ShowMessage ();
}
}
classe Superclass {
int i = 10;
}
La sous-classe de classe étend Superclass {
int i = 20;
public void showMessage () {
System.out.printf ("super.i =% d, this.i =% d / n", super.i, this.i);
}
}
Méthodes de remplacement héritées de la classe parent (remplacer)
1. Lorsqu'une méthode exactement la même que la classe parent apparaît dans une sous-classe (valeur de retour, nom de fonction, paramètres formels), une opération de remplacement se produira.
Overradedmemo1.java
La copie de code est la suivante:
/ * Comment remplacer la méthode héritée de la classe parent (remplacer)
* Résultat de sortie:
* Superclass: je suis bon ~
* Sous-classe: je suis excellent ~~~
* /
Classe publique AverriateDemo1 {
public static void main (String [] args) {
SUBSLASS SC = NOUVEAU SUBSLASS ();
sc.s.speak ();
}
}
classe Superclass {
public void speak () {
System.out.println ("Superclass: je suis bon ~");
}
}
La sous-classe de classe étend Superclass {
@Override // @ Override signifie que la méthode suivante aura une opération de réécriture. Augmentation de la sécurité du code dans une certaine mesure
et la robustesse
public void speak () {
super.speak ();
System.out.println ("Sous-classe: je suis excellent ~~~");
}
}
2. Lorsque vous remplacez la méthode de la classe parent, la classe enfant n'autorise pas les méthodes avec le même nom et les mêmes paramètres que la classe parent mais avec différents types de retour.
Overradedemo2.java
La copie de code est la suivante:
/ * Les méthodes avec le même nom et les mêmes paramètres que la classe parent, mais avec différents types de retour ne sont autorisées dans les sous-classes.
* Message d'erreur:
* Overradedemo.java:20: Erreur: f () en sous-classe ne peut pas remplacer f () en superclasse
* public int f () {
* ^
* Le type de retour int n'est pas compatible avec le vide
* Overridedemo.java:19: Erreur: la méthode ne remplace pas ou n'implémente pas une méthode à partir d'un supertype
* @Override
* ^
* 2 erreurs
* /
classe publique Overridedemo2 {
public static void main (String [] args) {
}
}
classe Superclass {
public void f () {
}
}
La sous-classe de classe étend Superclass {
@Outrepasser
public int f () {
retour 1;
}
}
3. L'autorisation d'accès de la méthode des réécritures de sous-classe La classe parent doit être supérieure ou égale à la méthode de la réécriture dans la classe parent.
Overradedemo3.java
La copie de code est la suivante:
/ * L'autorisation d'accès de la méthode de la sous-classe remplace la classe parent doit être supérieure ou égale à l'autorisation d'accès de la méthode de la classe parent
* Message d'erreur:
* Overradedemo.java:18: Erreur: f () en sous-classe ne peut pas remplacer f () en superclasse
* VOID protégé f () {
* ^
* Tenter d'attribuer des privilèges d'accès plus faibles;
* 1 erreur
* /
classe publique AverriateDemo3 {
public static void main (String [] args) {
}
}
classe Superclass {
public void f () {
}
}
La sous-classe de classe étend Superclass {
@Outrepasser
VOID protégée f () {// modifie l'autorisation d'accès ici au public
}
}
Contrôleur d'accès
Les caractères de contrôle d'accès sont: public, protégé, par défaut, privé
Certains nécessitent un peu de connaissance des forfaits, donc j'en parlerai lorsque je parlerai de colis.