Có an toàn khi nói rằng các thuộc tính và phương thức tĩnh không thể được kế thừa trong PHP? một vài ví dụ sẽ hữu ích.Thừa kế PHP và phương pháp và thuộc tính tĩnh
13
A
Trả lời
3
Không (Có vẻ như tôi không thể thấy số không phải trong câu hỏi). public
và protected
phương pháp tĩnh và tài sản được thừa kế như bạn mong chờ họ là:
<?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();
?>
thuộc tính tĩnh và phương pháp tuân theo các quy tắc visibility và inheritance như minh họa trong this snippet.
17
No. Không đúng. Static Methods and properties sẽ nhận được inherited giống như các phương pháp và tài sản không tĩnh và tuân theo cùng 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
Những ngoái hai là sự khác biệt đáng chú ý. Việc tăng thêm một thuộc tính tĩnh kế thừa trong lớp cơ sở cũng sẽ tăng nó trong tất cả các lớp con và ngược lại.
Các vấn đề liên quan
- 1. Phương pháp và kế thừa tĩnh trong Coffeescript
- 2. Thừa kế và tính chất tĩnh
- 3. Javascript thừa kế và phương pháp trọng
- 4. thuộc tính thừa kế và Reflection
- 5. biến tĩnh trong phương pháp tĩnh trong lớp cơ sở và thừa kế
- 6. Phương pháp trọng và thừa kế trong java
- 7. Thừa kế thừa kế và thừa kế phương thức
- 8. javascript prototyped thừa kế và thuộc tính đối tượng
- 9. thuộc tính thừa kế
- 10. PHP đơn và thừa kế
- 11. Biến tĩnh Java và thừa kế và Memory
- 12. Phương pháp với danh sách đã nhập và thừa kế
- 13. Phương pháp chung C# với thừa kế và giao diện
- 14. Java Interface: Kế thừa, Overriding, và quá tải phương pháp
- 15. Thừa kế JavaScript và thuộc tính hàm tạo
- 16. thừa kế trên thuộc tính lớp (python)
- 17. Phương pháp JQuery và thuộc tính DOM
- 18. Các thuộc tính và phương pháp
- 19. thừa kế, phương pháp chữ ký, phương pháp trọng và ném khoản
- 20. Polymorphism và tĩnh Phương pháp
- 21. Thừa kế và generics
- 22. Thuộc tính phương pháp có được kế thừa trong C# không?
- 23. Thừa kế các thành viên tĩnh trong PHP
- 24. Phương pháp tĩnh trong PHP
- 25. phương pháp chữ ký trong thừa kế
- 26. Thừa kế các thuộc tính css
- 27. Thừa kế ảo thuần túy, đa thừa kế và C4505
- 28. Đi: Thiết kế phương pháp "tĩnh"
- 29. QSharedData và thừa kế
- 30. XSD và thừa kế