継承と視界PHP
答えて
おそらく、名前が既に示唆しているように、プライベートメソッドであり、クラス継承によって継承/上書きされない可能性があります。
あなたはおそらくそれからそのコードが明示的にそうWe can redeclare the public and protected method, but not private
は、まさに起こるが追従していることを述べましたphp.netのマニュアルページ
:子クラスはメソッドtestPrivate
を再宣言ではなく、それ自身のバージョンを作成しません。子オブジェクトの場合のみ "スコープ"内にあります。 test()
は親クラスで定義されているため、親のtestPrivate
にアクセスします。
test
関数を子クラスに再宣言する場合は、子クラス? testPrivate()
にアクセスする必要があります。
:民間のみ がメンバーを定義するクラスによってアクセスすることができるよう
メンバーが宣言しました。
テスト関数は基本クラスのバーで実行されるので、独自のクラスのプライベート関数にアクセスします。
private
メンバーを上書きすることはできません。公開メンバーと保護されたメンバーだけが上書きできます。実際にはtestPrivate
がではなく、であることを意味します。したがって、Bar
はそれを見ることはできず、依然として独自のtestPrivate
を呼び出します。
プライベートメソッドは、宣言クラス以外では表示できません。親クラスからtestPrivate
を呼び出すので、それがアクセスできる唯一のメソッドはメソッドの独自の宣言です。したがって、あなたが見る出力を得ることができます。ただし、アクセス修飾子がprotected
の場合、保護されたメソッドが継承チェーン全体で可視になるため、期待する出力が得られます。
private
はprivate
を意味するためです。子供クラスでさえ、他のクラスはBar::testPrivate()
を知らないので、知らないことを無視することはできません。
Foo::testPrivate()
はFoo
の中でのみ使用できます。これは、private
のすべてです。
これはPHP固有のものではありません。継承ルールでは、protectedおよびpublic関数をオーバーライド可能にする必要があります。プライベート関数は独自のスコープを持ち、一般化されたクラスでは見えません。 Javaがコンパイルされているので、あなたが警告
The method testPrivate() from the type Foo is never used locally Foo.java
を取得する可能性があります除き
Bar::testPrivate
Foo::testPublic
:
、Javaで同じような状況の下、同じ結果を見つけてください。
public class Bar
{
public void test() {
this.testPrivate();
this.testPublic();
}
public void testPublic() {
System.out.println("Bar::testPublic\n)");
}
private void testPrivate() {
System.out.println("Bar::testPrivate\n");
}
}
public class Foo extends Bar {
public void testPublic() {
System.out.println("Foo::testPublic\n");
}
private void testPrivate() {
System.out.println("Foo::testPrivate\n");
}
public static void main(String[] args) {
Foo myFoo = new Foo();
myFoo.test();
}
}
- 1. クラス継承PHP
- 2. PHP継承ループ
- 3. PHP Doctrine継承
- 4. PHP - MVCとテーブルの継承
- 5. PHPのシリアル化と継承
- 6. PHPのシングルトンと継承
- 7. テストフィクスチャ継承と無視されたベーステストフィクスチャ
- 8. クラス継承とインターフェイス継承
- 9. PHPの継承と静的メソッドとプロパティ
- 10. PHPクラスの継承と拡張メソッド
- 11. PHP関数と変数の継承
- 12. PHP - オブジェクト指向実践と継承
- 13. 反復子継承と継承* this
- 14. Entity Frameworkとの継承継承
- 15. PHPのコンストラクタの継承
- 16. phpの継承のタイプ
- 17. PHP MySQLテーブルの継承
- 18. PHP autodoc(継承)autodocumentorタグ
- 19. "this" in class継承、PHP
- 20. PHP OOP継承問題
- 21. PHPの子クラスプロパティの継承
- 22. PHP動的クラス継承
- 23. PHPのインスタンス化の継承
- 24. 継承とインライン?
- 25. 継承とナビゲーションプロパティ
- 26. DataContractと継承?
- 27. 継承とプロトタイプチェーン
- 28. pyQt4と継承
- 29. 継承とパイソン
- 30. フラグメントと継承