>  기사  >  백엔드 개발  >  PHP와 Java의 정적 변수

PHP와 Java의 정적 변수

巴扎黑
巴扎黑원래의
2016-11-23 15:34:391025검색

정적 멤버는 클래스가 처음 로드될 때 생성되기 때문에 클래스 외부의 개체를 요구하지 않고 클래스 이름을 사용하여 정적 멤버에 액세스할 수 있습니다. 정적 멤버는 이 클래스의 각 인스턴스에서 반대됩니다. 객체가 클래스의 정적 멤버에 액세스합니까?

정적 멤버는 각 개체 내부에 존재하지 않지만 각 개체는 공유될 수 있으므로 개체를 사용하여 멤버에 액세스하면 이러한 속성 정의가 없으며 개체를 사용하여 정적 멤버에 액세스할 수 없습니다. 다른 객체 지향 언어,

Java는 객체를 사용하여 정적 멤버에 액세스할 수 있습니다.

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.