静的プロパティとメソッドを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. 静的メソッドと継承in Coffeescript
- 3. 静的メソッドの継承
- 4. Javascriptで静的プロパティと非静的プロパティの両方を継承するには?
- 5. 静的クラスと継承
- 6. 継承された静的プロパティのリフレクション
- 7. PHPで継承された静的メソッドのクラスからプロパティへのアクセス
- 8. コールの静的メソッド継承インタフェース
- 9. 静的メソッドとクラスを継承するクラスとandroid.app.Application?
- 10. Java静的変数と継承とメモリ
- 11. 継承された静的メソッド
- 12. Java継承または静的メソッド
- 13. Javaの継承と静的メンバー
- 14. 静的メンバの継承とJava
- 15. PHPクラスの継承と拡張メソッド
- 16. 静的機能の継承
- 17. 継承されたメソッド(プロトタイプ)と静的メソッド(式)の違いは何ですか?
- 18. PHP静的オブジェクトとメソッド
- 19. カプセル化と継承のメソッド
- 20. Python継承とメソッドのオーバーライド
- 21. pythonクラスのメソッドと継承
- 22. PHPで静的プロパティとメソッドを使用したOOPプログラミングの例
- 23. 他のパッケージの静的メソッド(ex mainメソッド)のprotected継承された非静的メソッドにアクセスするには?
- 24. 拡張メソッドと継承
- 25. MooToolsでの静的メンバーの継承
- 26. PHP - MVCとテーブルの継承
- 27. PHPのシリアル化と継承
- 28. PHPのシングルトンと継承
- 29. 静的メソッド&継承 - java.lang.IllegalAccessErrorコンパイル時に見つからない
- 30. Javadocのメソッドと継承されたメソッド