Heim >Java >JavaErste Schritte >Der Unterschied zwischen statischen Eigenschaften und dynamischen Eigenschaften in Java
Warum kann static aufgerufen werden, ohne ein Objekt zu erstellen?
Bevor das Objekt erstellt wird, werden alle statischen Eigenschaften oder Methoden im Metadatenbereich platziert und die statischen können über den Klassennamen aufgerufen werden.
Zum Beispiel:
public class Cat{ public static String name;//静态的,不创建对象都存在 public String color; //动态的,不创建猫的对象不存在这个属性 }
public class Main{ public static void main(String[] args){ Cat c =new Cat(); c.color = "黑色"; c.name = "喵喵"; Cat c1 = new Cat(); c1.color = "蓝"; System.out.println(c1.name); //正确 这是因为name是静态属性 } }
Online-Lehrvideo-Sharing: Java-Lehrvideo
Eigenschaften statischer Eigenschaften: Alle Objekte unter dieser Klasse teilen dieses eine Attribut , dieses Attribut ist weiterhin vorhanden, wenn das Objekt nicht erstellt wird. Wenn Sie dieses Attribut also ändern, ändern Sie es einfach über die Klasse (Cat.name = "小猫")
Dynamische Attribute sind nur im erstellten Objekt vorhanden und nur erstellen Diese Eigenschaft des Objekts existiert.
Der Unterschied zwischen statischen Eigenschaften und dynamischen Eigenschaften:
Das Objekt kann über den Stapel gefunden werden. Kann es also den Inhalt im Metadatenbereich aufrufen? ——Ja
Kann der Inhalt im Heap also über eine Klasse aufgerufen werden? ——Nein, denn in diesem Prozess gibt es ein Problem der Gewissheit und Unsicherheit.
Rufen Sie den Inhalt des Metadatenbereichs über die Klasse auf. Da das Objekt dynamisch ist, kann der Aufruf statischer Dinge sicherstellen, dass die statischen Dinge vorhanden sind, bevor das Objekt existiert static Wenn man etwas Dynamisches im Heap aufruft, ist es nicht sicher, ob das dynamische Ding existieren muss.
Das Dynamische kann also das Statische aufrufen, das Statische jedoch nicht das Dynamische.
public class Cat{ public static String name;//静态的,不创建对象都存在 public String color; //动态的,不创建猫的对象不存在这个属性 public Cat(){ } public void foo(){ color = "黑";//正确 name = "喵喵";//正确,一定可以调用静态的 } public static void test(){ color = "黑"; //错误,静态方法无法调用动态的属性 name = "小喵";//正确 foo();//动态的不一定存在 Cat c = new Cat(); c.foo(); //这时再能调用 } }
Weitere verwandte Artikel und Tutorials finden Sie unter: Erste Schritte beim Erlernen von Java
Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen statischen Eigenschaften und dynamischen Eigenschaften in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!