정적 속성 및 메서드를 PHP에서 상속 할 수 없다고 말하는 것이 안전합니까? 몇 가지 예가 도움이 될 것입니다.PHP 상속 및 정적 메서드 및 속성
13
A
답변
3
아니요 (분명히 질문에이 아닌 이 표시되지 않음). this snippet에 도시 된 바와 같이
<?php
class StackExchange {
public static $URL;
protected static $code;
private static $revenue;
public static function exchange() {}
protected static function stack() {}
private static function overflow() {}
}
class StackOverflow extends StackExchange {
public static function debug() {
//Inherited static methods...
self::exchange(); //Also works
self::stack(); //Works
self::overflow(); //But this won't
//Inherited static properties
echo self::$URL; //Works
echo self::$code; //Works
echo self::$revenue; //Fails
}
}
StackOverflow::debug();
?>
정적 속성과 메서드는 visibility 및 inheritance 규칙을 순종 : 당신이 그들을 것으로 기대하는 것처럼 public
및 protected
정적 메서드와 속성이 상속됩니다.
17
아니요. 사실이 아닙니다. Static Methods and properties는 비 정적 메서드와 속성과 같은 inherited를 얻을 수와 같은 visibility rules:
class A {
static private $a = 1;
static protected $b = 2;
static public $c = 3;
public static function getA()
{
return self::$a;
}
}
class B extends A {
public static function getB()
{
return self::$b;
}
}
echo B::getA(); // 1 - called inherited method getA from class A
echo B::getB(); // 2 - accessed inherited property $b from class A
echo A::$c++; // 3 - incremented public property C in class A
echo B::$c++; // 4 - because it was incremented previously in A
echo A::$c; // 5 - because it was incremented previously in B
그 마지막 두가 주목할만한 차이가 있습니다 순종하는 것입니다. 기본 클래스에서 상속 된 정적 속성을 늘리면 모든 하위 클래스에서 증분됩니다 (반대의 경우도 마찬가지입니다).
관련 문제
- 1. 상속 및 메서드/속성 재정의
- 2. 상속 및 메서드 오버로드
- 3. 정적 멤버 및 상속
- 4. 정적 메서드 상속
- 5. 정적 및 비 정적 메서드
- 6. PHP 젠드 엔진 확장 및 정적 메서드
- 7. Moq 및 가상 속성 및 메서드
- 8. 정적 메서드 및 멀티 스레딩
- 9. 정적 메서드 및 스레드
- 10. 메서드 오버로드 및 클래스 상속
- 11. @PersistenceContext 및 정적 속성
- 12. 상속 및 정적 변수 여기
- 13. Visual Studio에서 상속 된 메서드 및 속성 표시
- 14. 모델 상속 및 속성 기본값
- 15. ActionScript 3 - 정적 메서드 및 인스턴스 메서드
- 16. 정적 메서드 및 스레드 안전
- 17. 정적 메서드 및 스레드 안전
- 18. 정적 멤버 변수 및 메서드
- 19. PHP 함수 및 변수 상속
- 20. PHP : OOP 및 메서드
- 21. 속성 및 메서드 배열 JavaScript
- 22. repeater .net 속성 및 메서드
- 23. COM 속성 및 메서드 호출
- 24. 정적 속성 참조 비 정적 메서드
- 25. PHP 정적 메서드 질문
- 26. PHPunit mockobject 추상 및 정적 메서드
- 27. 정적 속성 및 잠금 사용
- 28. PHP, 정적 메소드 및 상속 .. 유효한 패턴 검색
- 29. 부스트 :: 파이썬, 정적 팩토리 및 상속
- 30. VB.NET 및 OOP - 공유 메서드 및 기본 속성