PHP 의 static 과 자바 의 static 의 대비

2036 단어 PHPstatic
자바 에 있 는 정적 변수 / 정적 방법 은 클래스 변수 / 클래스 방법 이 라 고도 부 릅 니 다. 메모리 스 택 에 존재 합 니 다. 한 개 만 있 고 클래스 와 대상 을 통 해 직접 접근 할 수 있 습 니 다.
public class MyStatic {
    public static String className = "MyStatic";
    public static void getClassName() {
        //      className     ,                      
        System.out.println(MyStatic.className);
    }
    
    public static void main(String[] args) {
        //       
        System.out.println(MyStatic.className);
        //        
        System.out.println((new Mystatic()).className);
        //       
        Mystatic.getClassName();
        //        
        (new Mystatic()).getClassName();
        //=========
        (new Mystatic()).className = "new class name";
        //=========
        //       
        System.out.println(MyStatic.className);
        //        
        System.out.println((new Mystatic()).className);
        //       
        Mystatic.getClassName();
        //        
        (new Mystatic()).getClassName();
    }
}

주의 하 세 요. 자바 의 정적 변 수 는 대상 의 접근 을 금지 하지 않 습 니 다. 그러나 PHP 와 달리 PHP 의 정적 방법 은 대상 에 의 해 호출 될 수 있 지만, 클래스 의 정적 변 수 는 클래스 의 방법 으로 만 접근 할 수 있 습 니 다. 대상 은 직접 접근 할 수 없습니다.
class Mystatic {
    public static $className = __CLASS__;
    public static function getClassName() {
        echo self::$className;
    }
}

echo Mystatic::$className;
Mystatic::getClassName();
//but
(new Mystatic())->className;//error     
//but       
(new Mystatic())->getClassName();

//       ,       ,    
Mystatic::$className = "new class Name";
(new Mystatic())->getClassName();

따라서 PHP 의 대상 이 클래스 의 정적 변 수 를 방문 하려 면 인터페이스 에 의존 해 야 합 니 다. 클래스 에서 정적 변 수 를 방문 하 는 방법 을 써 야 합 니 다. 자바 처럼 직접 사용 할 수 없습니다. 문법 류 와 대상 은 모두 접근 할 수 있 습 니 다.
Java:
정적 속성 클래스 와 대상 모두 접근 가능
정적 방법 클래스 와 대상 모두 접근 가능
PHP:
정적 속성 클래스 에 접근 할 수 있 습 니 다. 대상 은 인 터 페 이 스 를 통 해 접근 해 야 합 니 다.
정적 방법 클래스 접근 가능, 대상 호출 접근 가능
그러나 정적 방법 은 구성원 변 수 를 방문 할 수 없고 정적 속성 만 접근 할 수 있 습 니 다!!!!!!

좋은 웹페이지 즐겨찾기