Pourquoi static peut-il être appelé sans créer d'objet ?
Avant la création de l'objet, toutes les propriétés ou méthodes statiques sont placées dans la zone de métadonnées, et les propriétés statiques peuvent être appelées via le nom de la classe.
Par exemple :
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是静态属性 } }
Partage de vidéos pédagogiques en ligne : Vidéo pédagogique Java
Caractéristiques des propriétés statiques : Tous les objets de cette classe partagent celui-ci Attribut , cet attribut existe toujours si l'objet n'est pas créé, donc lors de la modification de cet attribut, il suffit de le modifier via la classe (Cat.name = "小猫")
Les attributs dynamiques n'existent que dans l'objet créé, et créer uniquement Cette propriété de l'objet existe.
La différence entre les propriétés statiques et les propriétés dynamiques :
L'objet peut être trouvé via la pile, peut-il donc appeler le contenu dans la zone de métadonnées ? ——Oui
Alors, le contenu du tas peut-il être appelé via une classe ? ——Non, car il y a un problème de certitude et d'incertitude dans ce processus.
Appelez le contenu de la zone de métadonnées via la classe. Étant donné que l'objet est dynamique, l'appel d'éléments statiques peut garantir que les éléments statiques doivent exister lors de l'appel. static Lorsque vous appelez quelque chose de dynamique dans le tas, il n'est pas certain que l'objet dynamique doive exister.
Ainsi, le dynamique peut appeler le statique, mais le statique ne peut pas appeler le dynamique.
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(); //这时再能调用 } }
Pour plus d'articles et de didacticiels connexes, veuillez visiter : Commencer à apprendre Java
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!