Heim > Java > javaLernprogramm > Hauptteil

Ausführliche Erläuterung des Zugriffs auf Felder und statische Methoden ohne Polymorphismus in Java

黄舟
Freigeben: 2017-10-10 10:19:54
Original
1786 Leute haben es durchsucht

Der folgende Editor bringt Ihnen einen Artikel, der auf der Tatsache basiert, dass der Zugriff auf Felder und statische Methoden in Java keinen Polymorphismus aufweist (Erklärung anhand von Beispielen). Der Herausgeber findet es ziemlich gut, deshalb teile ich es jetzt mit Ihnen und gebe es als Referenz. Folgen wir dem Editor und werfen wir einen Blick darauf.

1 Das Verknüpfen eines Methodenaufrufs mit dem Methodenkörper wird als

2 bezeichnet. Typ des referenzierten Objekts

3. Laufzeitbindung (dynamische Bindung) bedeutet, den tatsächlichen Typ des referenzierten Objekts während der Ausführung zu bestimmen und seine entsprechende Methode entsprechend seinem tatsächlichen Typ aufzurufen

4 . Mit Ausnahme statischer Methoden und endgültiger Methoden (private Methoden sind endgültige Methoden) Alle Methoden in Java erreichen Polymorphismus durch dynamische Bindung

5 ist nicht polymorph


package polymorphism; 
 
class SuperField { 
 public int field = 1; 
 
 public int getField() { 
  return field; 
 } 
} 
 
class SubField extends SuperField { 
 public int field = 2; 
  
 public int getField() { 
  return field; 
 } 
  
 public int getSuperField() { 
  return super.field; 
 } 
} 
 
public class FieldPolymorphism { 
 
 public static void main(String[] args) { 
  SuperField sup = new SubField(); 
  System.out.println("sup.field = " + sup.field + ", sup.getField() = " + sup.getField()); 
  SubField sub = new SubField(); 
  System.out.println("sub.field = " + sub.field + ", sub.getField() = " + sub.getField() + 
    ", sub.getSuperField() = " + sub.getSuperField()); 
 } 
 
}
Nach dem Login kopieren

Ausgabeergebnis:

sup.field = 1, sup.getField() = 2
sub.field = 2, sub.getField() = 2, sub.getSuperField() = 1

Wenn das SubField-Objekt in eine Super-Referenz konvertiert wird, wird jede Feldzugriffsoperation vom Compiler analysiert, sodass es nicht polymorph ist enthält tatsächlich zwei Felder, die Felder genannt werden: ein eigenes und ein von SuperField geerbtes Feld

Normalerweise ist das Feld auf privat gesetzt und kann nicht direkt oder durch Vererbung, Zugriff durch Aufrufmethoden

6. Auf ein statisches Feld zugreifen Methode ist nicht polymorph und ist keinem einzelnen Objekt zugeordnet


package polymorphism; 
 
class Super { 
  
 public static String staticMethod() { 
  return "Super staticMethod()"; 
 } 
} 
 
class Sub extends Super { 
 public static String staticMethod() { 
  return "Sub staticMethod()"; 
 } 
} 
 
public class StaticPolymorphism { 
 
 public static void main(String[] args) { 
  Super sup = new Sub(); 
  System.out.println(sup.staticMethod()); 
  System.out.println(Sub.staticMethod()); 
 } 
 
}
Nach dem Login kopieren

Ausgabeergebnis:

Super staticMethod()
Sub staticMethod()

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung des Zugriffs auf Felder und statische Methoden ohne Polymorphismus in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage