>  기사  >  Java  >  Java의 정적 속성과 동적 속성의 차이점

Java의 정적 속성과 동적 속성의 차이점

王林
王林앞으로
2019-11-29 14:32:204819검색

Java의 정적 속성과 동적 속성의 차이점

왜 객체를 생성하지 않고 static을 호출할 수 있나요?

객체가 생성되기 전 모든 정적 속성이나 메소드는 메타데이터 영역에 배치되며 정적 속성이나 메서드는 클래스 이름을 통해 호출할 수 있습니다.

예:

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是静态属性
    }
}

온라인 교육 비디오 공유: java 교육 비디오

정적 속성의 특징: 이 클래스 아래의 모든 개체는 이 속성을 공유하므로 개체가 생성되지 않은 경우에도 이 속성이 존재하므로 이 속성을 수정할 수 있습니다. 클래스를 통해 수정하면 됩니다. (Cat.name = "小猫")

동적 속성은 생성된 객체에만 존재합니다. 이 속성은 객체가 생성될 때만 존재합니다.

정적 속성과 동적 속성의 차이점:

객체는 스택을 통해 찾을 수 있으므로 메타데이터 영역의 콘텐츠를 호출할 수 있나요? ——예

그러면 힙에 있는 콘텐츠도 클래스를 통해 호출할 수 있나요? ——아니요, 이 과정에는 확실성과 불확실성의 문제가 있기 때문입니다.

클래스를 통해 메타데이터 영역의 콘텐츠를 호출합니다. 개체가 동적이기 때문에 정적 항목을 호출하면 개체가 존재하기 전에 정적 항목이 존재해야 합니다. static , 현재로서는 이 동적 항목이 존재해야 하는지 여부가 확실하지 않습니다.

그래서 동적은 정적을 호출할 수 있지만 정적은 동적을 호출할 수 없습니다.

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(); //这时再能调用
    }
}

더 많은 관련 기사와 튜토리얼을 보려면 다음을 방문하세요. Java 시작하기

위 내용은 Java의 정적 속성과 동적 속성의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제