Czy można bezpiecznie powiedzieć, że właściwości i metody statyczne nie mogą być dziedziczone w PHP? kilka przykładów będzie pomocnych.Dziedziczenie i statyczne metody i właściwości PHP
13
A
Odpowiedz
3
Nie (Wygląda na to, że w pytaniu nie było ani). public
i protected
statyczne metody i właściwości są dziedziczone, jak można się spodziewać, że będzie:
<?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();
?>
właściwości statyczne i metody przestrzegać zasad visibility i inheritance jak pokazano na this snippet.
17
Nie. To nieprawda. Static Methods and properties dostanie inherited tak samo jak metody i właściwości statycznych i nie słuchać samo 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
Te dwie ostatnie są zauważalną różnicą. Inkrementacja odziedziczonej właściwości statycznej w klasie bazowej spowoduje również jej zwiększenie we wszystkich klasach podrzędnych i na odwrót.
Powiązane problemy
- 1. Dziedziczenie i właściwości statyczne
- 2. Metody statyczne i dziedziczenie w Coffeespcu
- 3. Dziedziczenie i widoczność - PHP
- 4. Polimorfizm i Metody statyczne
- 5. Dziedziczenie PHP i MySQL
- 6. Metody statyczne w PHP
- 7. Singlety PHP i dziedziczenie
- 8. Metody statyczne i testy jednostkowe
- 9. Metody i zmienne statyczne Kotlin
- 10. Można wyświetlić wszystkie klasy PHP i ich metody i właściwości?
- 11. Dziedziczenie i dziedziczenie interfejsu
- 12. Dziedziczenie PHP i widoczność chronionych członków
- 13. Java Interfejs: dziedziczenie, nadrzędne i przeciążenia Metody
- 14. Metody i właściwości obiektów listy
- 15. Dziedziczenie doktryny PHP
- 16. Jak wyśmiewać metody statyczne i metody klasowe w języku Python
- 17. Właściwości statyczne w Swift
- 18. Statyczne importowanie i konstruktory
- 19. Dziedziczenie AutoMapper i Linq
- 20. Androida - getResources() i statyczne
- 21. Schemat JSona i dziedziczenie
- 22. TDD: Metody statyczne, wtrysk zależności, buforowanie i ty!
- 23. Dziedziczenie i tablice JavaScript
- 24. Członkowie i metody klasy PHP
- 25. rodzajowych Java i dziedziczenie
- 26. właściwości statyczne w Pythonie
- 27. rodzajowych Scala i dziedziczenie
- 28. Atrybuty i dokumentacja XML dla metody/właściwości
- 29. C# wirtualne (lub abstrakcyjne) metody statyczne
- 30. statyczne metody przedłużania