Maison >Java >javaDidacticiel >Héritage en Java : concepts et utilisation

Héritage en Java : concepts et utilisation

WBOY
WBOYavant
2023-04-22 16:19:081758parcourir

    Le concept d'héritage

    L'héritage signifie que la sous-classe hérite des caractéristiques et des comportements de la classe parent, de sorte que l'objet de la sous-classe (instance) possède les champs et méthodes d'instance de la classe parent, ou que la sous-classe hérite du méthode de la classe parent, afin que la sous-classe ait le même comportement que la classe parent.

    Grâce à l'héritage, vous pouvez créer rapidement de nouvelles classes, réaliser la réutilisation du code, améliorer la maintenabilité du programme, gagner beaucoup de temps dans la création de nouvelles classes et améliorer l'efficacité et la qualité du développement.

    Avantages de l'héritage :

    • Réduire la duplication de code

    • Améliorer la réutilisabilité du code

    • Faciliter l'expansion des fonctions

    ✅Format d'héritage class A extends B{}

    A : sous-classe, classe dérivée, sous-classe, B : parent classe, super classe, classe de base, superclasse

    Réflexion : Une fois que la sous-classe A hérite de la classe parent B, la sous-classe A obtient tous les attributs et méthodes déclarés dans la classe parent B, notamment Oui, pour les attributs ou méthodes déclarés privés dans la classe parent, une fois que la sous-classe a hérité de la classe parent, elle est toujours considérée comme ayant obtenu la structure privée de la classe parent. Ceci est uniquement dû à l'influence de l'encapsulation, la sous-classe ne peut pas appeler directement la structure de la classe parent

    Après avoir hérité du parent. classe, la sous-classe peut également déclarer ses propres attributs ou méthodes uniques : pour réaliser l'expansion des fonctions. Une classe parent peut avoir plusieurs sous-classes.Héritage unique de classes en Java : Une classe ne peut avoir qu'une seule classe parent. Les sous-classes sont un concept relatif. La classe parent dont une sous-classe hérite directement est appelée : Classe parente indirectement. hérité est appelé : classe parent indirecte.Une fois que la classe enfant a hérité de la classe parent, elle obtient les attributs et les méthodes déclarés dans la classe parent directe et dans toutes les classes parent indirectes.Si nous ne déclarons pas explicitement le parent d'une classe,Si c'est le cas. une classe, alors cette classe hérite de la classe java.lang.Object. La classe Object est la classe parent racine de toutes les classes Java.

    Points à noter lors de l'héritage :

    1.

    2 .Java ne prend pas en charge l'héritage multiple, mais une classe peut implémenter plusieurs interfaces, palliant ainsi les inconvénients de l'héritage unique

    3 La méthode de construction ne sera pas héritée par la sous-classe, mais la méthode de construction de la classe parent le peut ; être appelé depuis la sous-classe.

    Par exemple, la réécriture de la méthode

    class teacher{             //声明一个teacher类为父类
    	String name;      	   //定义父类的成员变量name、age   
    	int age;
    	void show(){           //定义父类成员方法,将成员变量输出
    		System.out.println(name); 	  
    		System.out.println(age); 
    	}
    }
    class Student extends teacher {     //声明一个Student类为子类并继承父类
    }
    public class myfirst {
    	public static void main(String[] args) {
    	System.out.println("学生");
    	Student student=new Student();     //声明一个Student类的实例对象student
    	student.name="Tom";                //子类调用父类的成员变量name并赋值
    	student.age=19;                    //子类调用父类的成员变量age并赋值
    	student.show();                    //子类调用父类的成员方法show
    	}
    }

    Dans les applications réelles, les fonctions des classes enfant et parent que nous écrivons sont différentes, nous devons donc réécrire ou masquer la méthode de la classe parent.

    1 Réécriture : une fois qu'une sous-classe a hérité d'une classe parent, elle peut remplacer les méthodes portant le même nom et les mêmes paramètres dans la classe parent.

    2 Application : après la réécriture, lorsqu'un objet de sous-classe est créé, l'objet de sous-classe peut être appelé via. l'objet sous-classe. Lorsqu'il y a une méthode avec le même nom et les mêmes paramètres dans une classe, ce qui est réellement exécuté, c'est que la sous-classe remplace la méthode de la classe parent

    3 Règles de réécriture :

    Déclaration de méthode :

    .

    Nom de la méthode du type de valeur de retour du modificateur d'autorisation (liste de paramètres formels)

    La méthode de la sous-classe est appelée la méthode remplacée, et la méthode de la classe parent est appelée la méthode remplacée. Le nom de la méthode et la liste des paramètres formels de la méthode remplacée. La méthode de la sous-classe est la même que le nom de la méthode et la liste des paramètres formels de la méthode substituée dans la classe parent. La liste des paramètres est la même et le modificateur d'autorisation de la méthode substituée par la sous-classe n'est pas inférieur au modificateur d'autorisation de. la méthode surchargée de la classe parent.Cas particulier : la sous-classe ne peut pas surcharger la méthode déclarée comme autorisation privée dans la classe parent. À propos du type de valeur de retour :

    Le type de valeur de retour de la méthode surchargée de la classe parent est nul, alors. le type de valeur de retour de la méthode remplacée par la sous-classe ne peut être que nul.Le type de valeur de retour de la méthode remplacée par la classe parent est de type A, alors le type de valeur de retour de la méthode remplacée par la sous-classe ne peut être que nul. Le type de valeur de retour de la méthode substituée par la classe peut être la classe A ou une sous-classe de la classe A. Le type de valeur de retour de la méthode substituée de la classe parent est un type de données de base (par exemple : double), puis le type de valeur de retour de la méthode remplacée par la sous-classe est Le type de valeur de retour doit être le même

    Les méthodes avec des paramètres du même nom dans la sous-classe et la classe parent doivent être déclarées comme non statiques pour être remplacées. Si elles sont statiques, elles ne le sont pas. overridden

    Par exemple

    class A{
    	public void sayHello() {                      //输出英文欢迎
    		System.out.println("Hello,Welcome to Java!!!");
    	}
    	public void sayBye() {
    		System.out.println("GoodBye,everyone");
    	}
    }
    class B extends A {           
        public void sayHello() {                      //输出中文欢迎  
        	System.out.println("大家好,欢迎学习Java!!!");
        }
    }
    public class myfirst {
    	public static void main(String[] args) {
    	B b=new B();                                //创建子类B的一个实例对象,使用默认构造方法
    	b.sayHello();                               //调用子类中重写的方法
    	b.sayBye();                                 //调用父类中的方法
    	}
    }

    Utilisation du mot-clé super

    Super est compris comme : de la classe parent, super peut être utilisé pour appeler des attributs, des méthodes et des constructeurs

    L'utilisation de super peut être effectuée dans les méthodes ou. constructeurs de sous-classes. En utilisant "super.property" ou "super.method", vous pouvez appeler explicitement les propriétés ou méthodes déclarées dans la classe parent. Cependant, généralement, nous avons l'habitude d'omettre "super.

    Cas particulier : lorsque la sous-classe et When. une propriété du même nom est définie dans la classe parent, si on veut appeler la propriété déclarée dans la classe parent dans la sous-classe, il faut utiliser explicitement la méthode "super.property" pour indiquer que la propriété déclarée dans la classe parent est appelé. Une fois que la sous-classe a remplacé la méthode dans la classe parent, lorsque nous voulons appeler la méthode substituée dans la classe parent dans la méthode de la sous-classe, nous devons explicitement utiliser la méthode "super.method" pour indiquer que l'appel est Méthodes remplacées dans la classe parent.

    super appelle le constructeur

    Nous pouvons explicitement utiliser "super (liste de paramètres formels)" dans le constructeur de la sous-classe pour appeler le constructeur spécifié déclaré dans la classe parent. "super (liste formelle de paramètres)" doit être déclaré dans la première ligne du constructeur de sous-classe, nous ciblons "this (liste formelle de paramètres)" ou super (liste formelle de paramètres)" Vous ne pouvez en choisir qu'un. des deux et ne peut pas apparaître en même temps. Dans la première ligne du constructeur, il n'y a pas de déclaration explicite de "this (liste formelle de paramètres)" ou "super (liste formelle de paramètres)".

    Par exemple

    package first;
    class A{
        public String name="张飞";         //添加成员变量
    	public void say() {                //添加成员方法say
    		System.out.println("我是父类A成员方法say");
    	}
    }
    class B extends A{
        public String name="关羽";         //与父类中同名的字段,隐藏父类
    	public void say(){                 //重写方法say
    		super.say();                   //使用super关键字调用父类中的方法
    		System.out.println("我是子类B成员方法say");
            System.out.println("父类的name名字:"+super.name); //使用super关键字访问父类中的变量
    	}
    }
    public class myfirst {
    	public static void main(String[] args) {
    	  B b=new B();                     //创建子类的一个实例对象
    	  b.say();                         //调用子类中重写的方法
    	  System.out.println("子类的name名字:"+b.name);   //调用子类中的name
    	}
    }

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Déclaration:
    Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer