인스턴스 대 정적: 일반적인 초기화 오류 이해
소프트웨어 개발에서 클래스에는 인스턴스와 정적 멤버가 모두 포함되는 경우가 많습니다. 인스턴스 멤버는 클래스의 개별 인스턴스와 연결되는 반면 정적 멤버는 모든 인스턴스에서 공유됩니다.
인스턴스 멤버로 작업할 때 필드 이니셜라이저의 제한 사항을 이해하는 것이 중요합니다. 필드 이니셜라이저는 인스턴스가 생성될 때 인스턴스 필드에 값을 할당하는 데 사용됩니다. 그러나 "필드 이니셜라이저는 비정적 필드, 메서드 또는 속성을 참조할 수 없습니다"라는 오류 메시지에 명시된 것처럼 필드 이니셜라이저는 비정적 멤버를 참조할 수 없습니다.
원본 코드 분석
제공하신 코드는 이러한 제한 사항을 보여줍니다. Service 클래스에는 인스턴스 필드 저장소와 인스턴스 저장소에서 비정적 메서드 GetDinner를 호출하려고 시도하는 필드 이니셜라이저가 포함되어 있습니다. 인스턴스가 완전히 초기화되기 전에 필드 이니셜라이저가 비정적 멤버에 액세스하려고 하기 때문에 오류가 발생합니다.
해결책
두 가지 일반적인 해결 방법이 있습니다. 이 문제:
모범 사례
두 솔루션 모두 유효하지만 일반적으로 생성자 초기화가 선호되는 것으로 간주됩니다. 접근하다. 이는 더 많은 유연성을 제공하고 필요에 따라 다른 인스턴스 필드를 초기화할 수 있게 하기 때문입니다.
비정적 멤버에 대한 필드 이니셜라이저 사용을 피함으로써 초기화 오류를 방지하고 코드가 의도한 대로 작동하도록 할 수 있습니다. .
위 내용은 내 필드 이니셜라이저가 비정적 멤버에 액세스할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!