Maison > Java > Javacommencer > le corps du texte

La différence entre les propriétés statiques et les propriétés dynamiques en Java

王林
Libérer: 2019-11-29 14:32:20
avant
4889 Les gens l'ont consulté

La différence entre les propriétés statiques et les propriétés dynamiques en Java

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; //动态的,不创建猫的对象不存在这个属性
}
Copier après la connexion
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是静态属性
    }
}
Copier après la connexion

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(); //这时再能调用
    }
}
Copier après la connexion

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!

Étiquettes associées:
source:csdn.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal