정적 멤버는 클래스가 처음 로드될 때 생성되기 때문에 클래스 외부의 개체를 요구하지 않고 클래스 이름을 사용하여 정적 멤버에 액세스할 수 있습니다. 정적 멤버는 이 클래스의 각 인스턴스에서 반대됩니다. 객체가 클래스의 정적 멤버에 액세스합니까?
정적 멤버는 각 개체 내부에 존재하지 않지만 각 개체는 공유될 수 있으므로 개체를 사용하여 멤버에 액세스하면 이러한 속성 정의가 없으며 개체를 사용하여 정적 멤버에 액세스할 수 없습니다. 다른 객체 지향 언어,
Java는 객체를 사용하여 정적 멤버에 액세스할 수 있습니다.
클래스의 정적 메소드는 클래스의 정적 속성에만 액세스할 수 있고, 클래스의 정적 메소드는 비정적 멤버에 액세스할 수 없습니다. 이유는 매우 간단합니다. 이 클래스의 메서드에서 이 클래스의 다른 멤버에 액세스하려면 $this 참조를 사용해야 하며 $this 참조 포인터는 개체에 대한 호출을 나타냅니다. 이 메소드에서는 정적 메소드가 객체로 호출되지 않고 클래스 이름을 사용하여 액세스되므로 객체가 전혀 없으며 $this에 대한 참조가 없으면 $this에 대한 참조가 없으면 액세스할 수 없다고 말했습니다. 클래스의 비정적 멤버와 개체 없이 클래스의 정적 멤버에 액세스할 수 있으므로 클래스의 정적 메서드는 클래스의 정적 속성에만 액세스할 수 있습니다. $this가 존재하지 않으므로 정적 멤버의 다른 멤버에 액세스할 수 있습니다. 메소드 정적 멤버에 대해 특수 클래스 "self"를 사용합니다. self는 $this와 유사하지만 self는 이 정적 메소드가 있는 클래스를 나타냅니다. 따라서 정적 메서드에서는 해당 메서드가 위치한 클래스의 "클래스 이름"을 사용하거나, "self"를 사용하여 다른 정적 멤버에 액세스할 수 있으며, 특별한 상황이 없으면 일반적으로 후자를 사용합니다. "self:: 멤버 속성" " 방식입니다.