Concept: l'héritage signifie que la définition d'une classe peut être basée sur une autre classe existante, c'est-à-dire que la sous-classe hérite de la classe parent, réalisant ainsi la réutilisation du code de la classe parent. La relation entre deux classes: la classe parent a généralement les caractéristiques de la commune à chaque sous-classe, tandis que la sous-classe peut ajouter des méthodes plus personnalisées. L'héritage de la classe est transitif, c'est-à-dire que les sous-classes peuvent continuer à dériver des sous-classes, le concept de classe situé au niveau supérieur est plus abstrait, et le concept de classes situé au niveau inférieur est plus béton.
1. Définir les sous-classes:
Format de syntaxe
[Modificateur] La classe de classe Nom étend le nom de classe du parent {
Sous-classe
}
Modificateur: défaut de défaut public protégé par public
Un corps de sous-classe est un nouveau contenu unique ajouté par une sous-classe basée sur l'héritage du contenu de la classe parent. Il peut inclure des variables membres, des méthodes membres, des classes, des interfaces, des méthodes de construction, etc.
Par exemple, dans une entreprise, un employé est un personnel embauché par l'entreprise et un gestionnaire est un employé spécial dans la société de gestion. Ce type d'employé spécial a non seulement les attributs et les méthodes d'employés ordinaires, mais aussi certains attributs et méthodes propres, tels que des allocations spéciales.
Le code est le suivant:
classe publique EmployeEClass {nom de chaîne privée; // Nom private int id; // Numéro d'entreprise Double salaire privé; // Salaire Private String Department; // département public EmployeEClass () {} public EmployeEClass (nom de chaîne, int id, double salaire, service de chaîne) {this.name = name; this.id = id; this.salary = salaire; this.department = département; } public String getName () {Nom de retour; } public void setName (string name) {this.name = name; } public int getID () {return id; } public void setid (int id) {this.id = id; } public double getSalary () {return salaire; } public void setsalary (double salaire) {this.salary = salaire; } public String getDepartment () {return département; } public void setDepartment (string Department) {this.department = département; } @Override public String toString () {return "EmployeEClass [name =" + name + ", id =" + id + ", salaire =" + salaire + ", département =" + département + "]"; }}Il s'agit du code de la classe des employés, qui a quatre attributs, nom, numéro, salaire, département.
classe publique ManageClass étend EmployeEClass {Double spécial privé; Public ManagerClass () {Super ();} Public ManagerClass (nom de chaîne, int id, double salaire, département de chaîne, double spécial) {super (nom, id, salaire, département); this.specialSalary = SpecialSalary; } public double getSpecialSalary () {return Specialary; } public void setSpecialSalary (double spécialSalary) {this.specialSalary = SpecialSalary; } @Override public String toString () {return super.toString () + "/ SpecialSal:" + SpecialSalary; }}Il s'agit d'une sous-classe, classe Manager, avec ses propres attributs, des allocations spéciales.
2. Sous-classe Accessibilité aux membres de la classe des parents
Une sous-classe peut hériter des membres de la classe parent, mais l'accès aux membres de la classe parent est contrôlé par la fonction d'accès.
La classe parent et la classe enfant sont dans le même package: privé ne peut pas être accessible directement, mais nous pouvons obtenir le membre privé de la classe parent via une méthode de membre avec un attribut d'accès public.
La classe parent et la classe infantile ne sont pas dans le même package: privé et par défaut ne sont pas accessibles directement, mais nous pouvons obtenir le membre privé de la classe parent via la méthode des membres avec des propriétés d'accès public et protégées.
3. Surcharge et submingation des méthodes de membres de la classe
Lorsque le nom de la nouvelle variable de membre définie dans la sous-classe est le même qu'une variable de membre dans la classe parent, la sous-classe masque la variable membre correspondante dans la classe parent.
Une surcharge ou un remplacement d'une méthode de membre est une méthode de membre définie dans une sous-classe lorsque le nom d'une méthode de membre définie dans la classe parent est le même que le nom d'une méthode de membre dans la classe parent.
(1) surcharge des méthodes des membres
Dans l'employé et le gestionnaire de châtaignier mentionné plus tôt, nous pouvons définir une méthode de membre dans la classe des employés
public void setInfo (nom de chaîne, int id, double salaire, département de chaîne) {this.name = new String (name); this.id = id; this.salary = salaire; this.department = new String (département); }Dans la classe Manager, il peut être défini comme:
public void setInfo (nom de chaîne, int id, double salaire, département de chaîne, double spécial) {super (nom, id, salaire, département); this.specialSalary = SpecialSalary; }Ceci est la surcharge des méthodes des membres
(2) remplacer les méthodes des membres
Il y a généralement deux formes:
① Dans la méthode des membres définie par la sous-classe, appelez d'abord la méthode de membre remplacé dans la classe parent, puis ajoutez quelques instructions d'opération.
② Dans les méthodes de membres définies par la sous-classe, les méthodes de membre remplacées par la classe parent ne sont pas appelées, mais un groupe d'instructions est réécrit. Cela permet une couverture complète de la classe parent. Cette méthode doit être implémentée lorsqu'une opération d'une sous-classe est complètement différente de l'opération de l'objet de classe parent.
châtaigne:
Dans la classe d'objets, il existe une méthode membre Equals () qui détermine si deux objets sont égaux, et son code est:
public boolean euqals (objet obj) {return (this == obj); }On peut voir que cette méthode membre consiste à comparer si deux objets se réfèrent à un objet en même temps.
Mais nous espérons maintenant implémenter une fonction qui compare si le contenu de deux objets du même type est égal. Nous avons donc une classe plurielle ci-dessous, chaque classe plurielle consiste en une partie réelle et une partie imaginaire. La fonction de conception peut comparer si deux nombres complexes sont égaux. Le code est le suivant:
classe publique ComplexNumber {Double privé RE; Double IM privé; public complexNumber () {re = 0,0; im = 0,0;} public complexNumber (double re, double im) {this.re = re; this.im = im; } public double getre () {return re; } public void setre (double re) {this.re = re; } public double getIM () {return im; } public void setim (double im) {this.im = im; } public boolean equals (objet autre objet) {if (this == autreObject) return true; if (autreobject == null) return false; if (getClass ()! = autreobject.getClass ()) return false; ComplexNumber Autre = (complexNumber) autreObject; if ((re == autre.re) && (im == autre.im)) return true; else return false; } public String toString () {String str = ""; if (re! = 0) str + = re; if (im == 0) return str; if (im <0) str + = im + "i"; else str + = "+" + im + "i"; retour STR; } public static void main (String [] args) {complexNumber c1, c2; c1 = nouveau complexeNumber (2,3); c2 = nouveau complexeNumber (2, -3.4); if (c1.equals (c2)) {System.out.println ("(" + c1 + ") == (" + c2 + ")"); } else {System.out.println ("(" + c1 + ") <> (" + c2 + ")"); }}}Le résultat est (2.0 + 3.0i) <> (2.0-3.4i)
Ce qui précède est la brève discussion de la principale compréhension de Java de l'héritage que l'éditeur vous apporte. J'espère que tout le monde soutiendra Wulin.com plus ~