Heim  >  Artikel  >  Java  >  Vererbung in Java: Konzepte und Verwendung

Vererbung in Java: Konzepte und Verwendung

WBOY
WBOYnach vorne
2023-04-22 16:19:081720Durchsuche

    Das Konzept der Vererbung

    Vererbung bedeutet, dass die Unterklasse die Merkmale und Verhaltensweisen der übergeordneten Klasse erbt, sodass das Unterklassenobjekt (Instanz) über die Instanzfelder und -methoden der übergeordneten Klasse verfügt oder die Unterklasse diese erbt Methode aus der übergeordneten Klasse, sodass die Unterklasse das gleiche Verhalten wie die übergeordnete Klasse aufweist.

    Durch Vererbung können Sie schnell neue Klassen erstellen, die Wiederverwendung von Code realisieren, die Wartbarkeit von Programmen verbessern, viel Zeit beim Erstellen neuer Klassen sparen und die Entwicklungseffizienz und -qualität verbessern.

    Vorteile der Vererbung:

    • Codeduplizierung reduzieren

    • Code-Wiederverwendbarkeit verbessern

    • Funktionserweiterung erleichtern

    ✅Vererbungsformat: class A extends B{}

    A: Unterklasse, abgeleitete Klasse, Unterklasse, B: übergeordnete Klasse Klasse, Superklasse, Basisklasse, Superklasse

    Reflexion: Sobald Unterklasse A die übergeordnete Klasse B erbt, erhält Unterklasse A alle in der übergeordneten Klasse B deklarierten Attribute und Methoden, insbesondere Ja, für Attribute oder Methoden, die in der übergeordneten Klasse als privat deklariert sind. Nachdem die Unterklasse die übergeordnete Klasse geerbt hat, wird immer noch davon ausgegangen, dass sie die private Struktur der übergeordneten Klasse erhalten hat. Dies liegt nur an der Kapselung, da die Unterklasse die Struktur der übergeordneten Klasse nicht direkt aufrufen kann

    Nachdem die übergeordnete Klasse geerbt wurde In der Klasse kann die Unterklasse auch ihre eigenen eindeutigen Attribute oder Methoden deklarieren: um die Erweiterung von Funktionen zu realisieren. Eine übergeordnete Klasse kann in Java mehrere Unterklassen haben: Eine Klasse kann nur eine übergeordnete Klasse haben. Die übergeordnete Klasse wird als direkte übergeordnete Klasse bezeichnet geerbt heißt: indirekte übergeordnete Klasse. Nachdem die untergeordnete Klasse die übergeordnete Klasse geerbt hat, erhält sie die Eigenschaften und Methoden, die in der direkten übergeordneten Klasse und allen indirekten übergeordneten Klassen deklariert sind Eine Klasse, diese Klasse erbt von der Klasse java.lang.Object und ist die Stammklasse aller Java-Klassen. Bei der Vererbung ist Folgendes zu beachten:

    1 Unterklassen können die übergeordnete Klasse nicht erben. Java unterstützt keine Mehrfachvererbung, aber eine Klasse kann mehrere Schnittstellen implementieren, wodurch die Nachteile der Einzelvererbung überwunden werden.

    3 Die Konstruktionsmethode wird nicht von der Unterklasse geerbt, aber die Konstruktionsmethode der übergeordneten Klasse kann aufgerufen werden die Unterklasse.

    Zum Beispiel das Umschreiben der

    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
    	}
    }

    -Methode

    In tatsächlichen Anwendungen sind die Funktionen der von uns geschriebenen untergeordneten und übergeordneten Klassen unterschiedlich, dann müssen wir die Methode der übergeordneten Klasse neu schreiben oder ausblenden.

    1 Umschreiben: Nachdem eine Unterklasse eine übergeordnete Klasse geerbt hat, kann sie Methoden mit demselben Namen und denselben Parametern in der übergeordneten Klasse überschreiben.

    2 Anwendung: Nach dem Umschreiben kann das Unterklassenobjekt aufgerufen werden, wenn ein Unterklassenobjekt erstellt wird das Unterklassenobjekt. Wenn es in einer Klasse eine Methode mit demselben Namen und denselben Parametern gibt, überschreibt die Unterklasse tatsächlich die Methode der übergeordneten Klasse

    Methodenname des Berechtigungsmodifikators (formale Parameterliste)

    Die Methode in der Unterklasse wird als überschriebene Methode bezeichnet, und die Methode in der übergeordneten Klasse wird als überschriebene Methode bezeichnet Die Methode in der Unterklasse ist mit dem Methodennamen und der formalen Parameterliste der überschriebenen Methode in der übergeordneten Klasse identisch. Die Parameterliste ist dieselbe und der Berechtigungsmodifikator der von der Unterklasse überschriebenen Methode ist nicht kleiner als der Berechtigungsmodifikator von Sonderfall: Die untergeordnete Klasse kann die in der übergeordneten Klasse als private Berechtigung deklarierte Methode nicht überschreiben:

    Der Rückgabewerttyp der überschriebenen Methode der übergeordneten Klasse ist ungültig Der Rückgabewerttyp der von der Unterklasse überschriebenen Methode kann nur ungültig sein. Der Rückgabewerttyp der überschriebenen Methode der übergeordneten Klasse kann nur vom Typ A sein Der Rückgabewerttyp der von der Klasse überschriebenen Methode kann Klasse A oder eine Unterklasse von Klasse A sein. Der Rückgabewerttyp der überschriebenen Methode der übergeordneten Klasse ist ein Basisdatentyp (z. B. double) und dann der Rückgabewerttyp Der Rückgabewerttyp der von der Unterklasse überschriebenen Methode muss derselbe sein

    Methoden mit gleichnamigen Parametern in der Unterklasse und der übergeordneten Klasse müssen als nicht statisch deklariert werden, um überschrieben zu werden. Wenn sie statisch sind, ist dies nicht der Fall überschrieben

    Zum Beispiel

    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();                                 //调用父类中的方法
    	}
    }
    Verwendung des Schlüsselworts super

    Super wird wie folgt verstanden: Super kann zum Aufrufen von Attributen, Methoden und Konstruktoren verwendet werden.

    Super kann in Methoden oder Konstruktoren von Unterklassen verwendet werden. Durch die Verwendung von „super.property“ oder „super.method“ können Sie die in der übergeordneten Klasse deklarierten Eigenschaften oder Methoden explizit aufrufen. Normalerweise sind wir es jedoch gewohnt, „super.

    “ wegzulassen. Sonderfall: wenn die Unterklasse und wenn In der übergeordneten Klasse ist eine Eigenschaft mit demselben Namen definiert. Wenn wir die in der übergeordneten Klasse deklarierte Eigenschaft in der Unterklasse aufrufen möchten, müssen wir explizit die Methode „super.property“ verwenden, um anzugeben, dass die Eigenschaft in der übergeordneten Klasse deklariert ist Wenn die Unterklasse die Methode in der übergeordneten Klasse überschreibt, müssen wir die Methode „super.method“ explizit verwenden, um diese Methode anzuzeigen heißt Überschriebene Methoden in der übergeordneten Klasse.

    super ruft den Konstruktor auf

    Wir können „super (formale Parameterliste)“ im Konstruktor der Unterklasse explizit verwenden, um den in der übergeordneten Klasse deklarierten Konstruktor aufzurufen „super (formale Parameterliste)“ muss in der ersten Zeile des Unterklassenkonstruktors deklariert werden. Im Konstruktor der Klasse zielen wir auf „this (formale Parameterliste)“ oder „super (formale Parameterliste)“ ab Einer von beiden und kann nicht gleichzeitig erscheinen. In der ersten Zeile des Konstruktors gibt es keine explizite Deklaration von „this (formale Parameterliste)“ oder „super (formale Parameterliste)“. Klasse

    Zum Beispiel

    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
    	}
    }

    Das obige ist der detaillierte Inhalt vonVererbung in Java: Konzepte und Verwendung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen