Fazit: Statische Eigenschaften und statische Methoden in Java können vererbt werden, sie werden jedoch nicht überschrieben, sondern ausgeblendet.
Gründe:
1. Statische Methoden und Attribute gehören zu Klassen. Beim Aufruf werden sie direkt über Klassenname.Methodenname vervollständigt für den Vererbungsmechanismus aufgerufen werden kann.
Wenn statische Methoden und Attribute in der Unterklasse definiert sind, werden die statischen Methoden oder Attribute der übergeordneten Klasse zu diesem Zeitpunkt als „versteckt“ bezeichnet. Wenn Sie die statischen Methoden und Attribute der übergeordneten Klasse aufrufen möchten, können Sie direkt Name der übergeordneten Klasse oder Variablenname verwenden. Unterklassen können statisch erben Methoden und Eigenschaften, aber sie sind nicht dasselbe wie Instanzmethoden und -eigenschaften. Es gibt eine Situation wie „versteckt“.
2. Der Grund, warum Polymorphismus realisiert werden kann, hängt von der Vererbung, der Schnittstelle und dem Umschreiben sowie der Überladung ab (Vererbung und Umschreiben sind am kritischsten). Durch Vererbung und Überschreibung können Referenzen der übergeordneten Klasse auf Objekte verschiedener Unterklassen verweisen.
Die Funktion des Umschreibens ist: Nach dem „Umschreiben“ ist die Priorität der Unterklasse höher als die Priorität der übergeordneten Klasse, aber „Ausblenden“ hat diese Priorität nicht.
Ein Beispiel ist wie folgt:
package com.study.test; public class A { //父类 public static String staticStr = "A静态属性"; public String nonStaticStr = "A非静态属性"; public static void staticMethod(){ System.out.println("A静态方法"); } public void nonStaticMethod(){ System.out.println("A非静态方法"); } }
package com.study.test; public class B extends A{//子类B public static String staticStr = "B改写后的静态属性"; public String nonStaticStr = "B改写后的非静态属性"; public static void staticMethod(){ System.out.println("B改写后的静态方法"); } }
package com.study.test; public class C extends A{//子类C继承A中的所有属性和方法 }
package com.study.test; public class StaticExtendsTest { public static void main(String[] args) { C c = new C(); System.out.println(c.nonStaticStr); System.out.println(c.staticStr); c.staticMethod();//输出的结果都是父类中的非静态属性、静态属性和静态方法,推出静态属性和静态方法可以 被继承 System.out.println("-------------------------------"); A c1 = new C(); System.out.println(c1.nonStaticStr); System.out.println(c1.staticStr); c1.staticMethod();//结果同上,输出的结果都是父类中的非静态属性、静态属性和静态方法,推出静态属性和 静态方法可以被继承 System.out.println("-------------------------------"); B b = new B(); System.out.println(b.nonStaticStr); System.out.println(b.staticStr); b.staticMethod(); System.out.println("-------------------------------"); A b1 = new B(); System.out.println(b1.nonStaticStr); System.out.println(b1.staticStr); b1.staticMethod();//结果都是父类的静态方法,说明静态方法不可以被重写,不能实现多态 } }
Empfohlenes Tutorial: Java Quick Start
Das obige ist der detaillierte Inhalt vonKönnen statische Methoden in Java vererbt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!