Heim  >  Artikel  >  Java  >  Zusammenfassung des Java-Konzeptverständnisses zum Polymorphismus

Zusammenfassung des Java-Konzeptverständnisses zum Polymorphismus

WBOY
WBOYnach vorne
2022-09-01 14:48:011703Durchsuche

Dieser Artikel vermittelt Ihnen relevantes Wissen über Java. Er befasst sich hauptsächlich mit der detaillierten Erklärung des Polymorphismus in Java. Die Vererbungsbeziehung ermöglicht es einer Unterklasse, die Merkmale der übergeordneten Klasse zu erben und einige neue Merkmale hinzuzufügen. Eine Unterklasse ist eine Spezialisierung ihrer übergeordneten Klasse, aber das Gegenteil ist hoffentlich nicht für alle hilfreich.

Zusammenfassung des Java-Konzeptverständnisses zum Polymorphismus

Empfohlene Studie: „Java-Video-Tutorial

1. Das Konzept des Polymorphismus

Die Vererbungsbeziehung ermöglicht es einer Unterklasse, die Merkmale der übergeordneten Klasse zu erben und einige neue Merkmale hinzuzufügen. Eine Unterklasse ist eine Spezialisierung ihrer übergeordneten Klasse, und jede Instanz einer Unterklasse ist eine Instanz ihrer übergeordneten Klasse, aber das Gegenteil ist nicht der Fall. Beispiel: Jeder Kreis ist ein geometrisches Objekt, aber nicht jedes geometrische Objekt ist ein Kreis. Daher können Sie jederzeit eine Instanz einer Unterklasse an einen Parameter übergeben, der einen übergeordneten Typ erfordert. Der Referenzfall ist wie folgt:

public class PolymorphismDemo{
/** Main method */
public static void main(String[] args){
  displayObject(new Circle(1,"red",false));
  displayObject(new Rectangle(1,1,"black",true));
}
 
public static void displayObject(GeometriicObject object){
  System.out.println("Created on "+ object.getDateCreated()+".Color is"+object.getColor());
}
}

Erstellt am Montag, 9. März, 19:25:20 EDT 2011. Farbe ist rot. Erstellt am Montag, 9. März, 19:25:20 EDT 2011. Farbe ist schwarz. Methode displayObject verfügt über Parameter vom Typ GeometriicObject. displayObject kann durch Übergabe einer beliebigen Instanz von GeometricObject aufgerufen werden. Objekte von Unterklassen können überall dort verwendet werden, wo Objekte der übergeordneten Klasse verwendet werden. Dies wird allgemein als Polymorphismus bezeichnet.

Einfach ausgedrückt bedeutet

Polymorphismus, dass eine Variable eines übergeordneten Typs auf ein Objekt eines Untertyps verweisen kann

.

2. Merkmale des Polymorphismus Die Prämisse des Polymorphismus: Vererbung (dh es muss eine Beziehung zwischen untergeordneter und übergeordneter Klasse bestehen). Wenn eine Methode mithilfe einer polymorphen Referenzvariablen der übergeordneten Klasse aufgerufen wird, wird die umgeschriebene Methode der Unterklasse verwendet angerufen. Definitionsformat: Variablenname des übergeordneten Klassentyps = neuer Unterklassentyp (); 3 Das Betriebssymbol

Instanceof ist das Schlüsselwort von Java. Jeder Buchstabe in einem Java-Schlüsselwort besteht aus

Kleinbuchstaben

.

Um die Typkonvertierung besser zu verstehen, kann man sie sich als ähnlich der Beziehung zwischen Tieren, Eisbären und Pandas vorstellen. Die Tierklasse Animal ist die übergeordnete Klasse der Eisbärenklasse Eisbär und der Pandaklasse Panda . Eisbären sind Tiere, daher können Sie einer Animal-Variablen jederzeit sicher eine Instanz von Polar bear zuweisen.

Die Verwendung dieses Schlüsselworts besteht darin, zu bestimmen, ob ein Objekt zu einem bestimmten Datentyp gehört.

Der Rückgabewert ist vom Typ Boolean.

 
        Fu Zz=new Xu();
        Fu Zzz=new yiting();
        if(f1 instanceof Xu){
            System.out.println("Zz是Xu的类型");
        }
        else{
            System.out.println("Zzz是yiting的类型");
        }
4. Polymorphe Transformation

1. Sie können eine Instanz einer Unterklasse immer in eine Variable einer übergeordneten Klasse konvertieren, was als Upcasting bezeichnet wird, da die Instanz der Unterklasse immer ihre Instanz ist die übergeordnete Klasse.

Funktion:

Reduzieren Sie etwas sich wiederholenden Code. Beim Instanziieren von Objekten können Sie je nach Bedarf verschiedene Objekte instanziieren Die Methode, auf die die Klassenreferenz zeigt oder die von ihr aufgerufen wird, ist die Methode der Unterklasse. Dies wird als dynamische Bindung bezeichnet. Nach der Aufwärtstransformation kann die übergeordnete Klassenreferenz die eigenen Methoden der Unterklasse nicht aufrufen.

2. Downcast Konvertieren Sie eine Instanz einer übergeordneten Klasse in ihre Unterklassenvariable. Sie müssen Konvertierungsmarkierungen (Unterklassennamen) verwenden, um explizite Konvertierungen durchzuführen und dem Compiler Ihre Absichten anzuzeigen. Damit die Konvertierung erfolgreich ist, müssen Sie sicherstellen, dass das konvertierte Objekt eine Instanz der Unterklasse ist.

Funktion:

Bei der Aufwärtstransformation gehen andere für das Unterklassenobjekt einzigartige Methoden verloren; es kann durch Abwärtstransformation zurückübertragen werden.

package project2;
	class Animal{
		int num=100;
		void say(){
			System.out.println("It's an Animal.");
		}
	}
 
	class Cat extends Animal{
		int num=50;
		void say(){
			System.out.println("It's a Cat.");
		}	
		void bark(){
			System.out.println("喵喵喵!");
		}
	}
 
	public class project2{
		public static void main(String[] args) {
			Animal cat=new Cat();//向上转型	
			System.out.println(cat.num);
			cat.say();
//			cat.bark();
		}
	}

Laufergebnis:

50
Es ist eine Katze.

Miau,miau!

5. Umschreiben der Methode

Tipps: Um eine Methode neu zu schreiben, müssen Sie dieselbe Signatur wie die übergeordnete Klasse in der Unterklasse verwenden Definieren Sie diese Methode.

Unterklassen erben Methoden von übergeordneten Klassen. Manchmal muss eine Unterklasse die Implementierung einer in der übergeordneten Klasse definierten Methode ändern. Dies wird als Methodenüberschreibung bezeichnet.

Die folgenden Punkte sind zu beachten:

Die überschriebene Methode muss dieselbe Signatur wie die überschriebene Methode und denselben oder einen kompatiblen Rückgabetyp haben. Kompatibilität bedeutet, dass der Rückgabetyp einer überschreibenden Methode ein Untertyp des Rückgabetyps der überschriebenen Methode sein kann. Eine Instanzmethode kann nur überschrieben werden, wenn auf sie zugegriffen werden kann. Wenn die in der Unterklasse definierte Methode in der übergeordneten Klasse privat ist, haben diese beiden Methoden überhaupt keine Beziehung. Statische Methoden können ebenso wie Instanzmethoden vererbt werden. Statische Methoden können jedoch nicht überschrieben werden. Wenn eine in der übergeordneten Klasse definierte statische Methode in der untergeordneten Klasse neu definiert wird, wird die in der übergeordneten Klasse definierte statische Methode ausgeblendet. Versteckte statische Methoden können mit der Syntax „Name der übergeordneten Klasse.Name der statischen Methode“ aufgerufen werden. Vererbung und Überschreibung verhindern

       一个被final修饰的类和方法都不能被继承。被final修饰的数据域是一个常数。

       有时候,可能希望防止类被继承。在这种情况下,使用final修饰符表明一个类是最终类,是不能作为父类的。Math类就是一个最终类。String、StringBuilder和StringBuffer类以及所有基本数据类型的包装类也都是最终类。例如,如下类A 就是最终类,不能被继承:

public final class A{
  //Data fields,constructors, and methods omitted
}

也可以定义一个方法为最终,最终方法不能被它的子类重写。例如如下,不能被重写:

public class Test {
  //Data fields,constructors, and methods omitted
 
  public final void m() {
    // Do something
 }
}

注:修饰符public、protected、private、static、abstract以及final可以用在类和类的成员上,只有final修饰符还可以用在方法中的局部变量上。方法内的final局部变量就是常量。

六、小结

为了重写一个方法,必须使用与它的父类中的方法一样的签名、一样或者兼容的返回类型来定义子类中的方法。实例方法只有在可访问时才能重写。这样,私有方法是不能重写的,因为它是不能在类本身之外访问的。如果子类中定义的方法在父类中是私有的,那么这两个方法是完全没有关系的噢!静态方法与实例方法一样可以继承。但是,静态方法不能重写,如果父类中定义的静态方法在子类中重新定义,那么父类中定义的方法被隐藏。可以使用表达式obj instanceof AClass 测试一个对象是否是一个类的实例。可以使用final修饰符来表明一个类是最终类,是不能被继承的;也可以表明一个方法是最终的,是不能被重写的。

推荐学习:《java视频教程

Das obige ist der detaillierte Inhalt vonZusammenfassung des Java-Konzeptverständnisses zum Polymorphismus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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