¿Es seguro decir que las propiedades y los métodos estáticos no se pueden heredar en PHP? algunos ejemplos serán útiles.Herencia de PHP y métodos y propiedades estáticos
13
A
Respuesta
3
No (Aparentemente no pude ver el no en la pregunta). public
protected
y métodos y propiedades estáticas se heredan como era de esperar que sean:
<?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();
?>
propiedades y métodos estáticos obedecen a las reglas visibility y inheritance como se ilustra en this snippet.
17
No. Eso no es verdad. Static Methods and properties conseguirá inherited lo mismo que los métodos y las propiedades estáticas y no obedecer a la misma 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
Los dos últimos son la notable diferencia. Incrementar una propiedad estática heredada en la clase base también la incrementará en todas las clases secundarias y viceversa.
Cuestiones relacionadas
- 1. Métodos estáticos y herencia en Coffeescript
- 2. Herencia en métodos estáticos
- 3. Herencia y propiedades estáticas
- 4. genéricos de Java, singletons y métodos estáticos
- 5. Inicializadores estáticos y métodos estáticos En Java
- 6. Métodos estáticos en PHP
- 7. php métodos estáticos pregunta
- 8. PHP llegar métodos estáticos
- 9. métodos estáticos y pruebas unitarias
- 10. C++ herencia privada y miembros/tipos estáticos
- 11. estáticos y no estáticos Llamada en PHP
- 12. PHP: funciones y objetos estáticos y no estáticos
- 13. Clase estática vs. ¿Clases con constructor privado y todas las propiedades y métodos estáticos?
- 14. Desventajas de los métodos estáticos en PHP
- 15. Clojure vars y Java métodos estáticos
- 16. PHPUnit Mock objetos y métodos estáticos
- 17. Métodos estáticos: cuándo y cuándo no
- 18. Cuándo usar clases y métodos estáticos?
- 19. Los métodos estáticos y su anulando
- 20. Encadenamiento de métodos estáticos en PHP?
- 21. ¿Admite Salesforce Apex la herencia de métodos estáticos?
- 22. Tengo una clase con 14 métodos estáticos y 4 propiedades estáticas, ¿es malo?
- 23. Clases y métodos abstractos en Java, Herencia
- 24. C# .NET métodos genéricos y herencia
- 25. Métodos de JQuery y propiedades DOM
- 26. Controladores ASP.NET MVC métodos estáticos
- 27. Implementar un singleton de PHP: propiedades de clases estáticas o variables de métodos estáticos?
- 28. ¿Cómo se organizan métodos y propiedades dentro de una clase?
- 29. DOM4: propiedades y métodos obsoletos, ¿qué significa?
- 30. La herencia de los miembros estáticos en PHP