目次
返信内容:
ホームページ バックエンド開発 PHPチュートリアル PHPにおける静的プロパティとメソッドの継承の問題

PHPにおける静的プロパティとメソッドの継承の問題

Jul 06, 2016 pm 01:51 PM
php static

インターネット上の静的プロパティとメソッドの継承に関しては、答えはすべて奇妙なので、コードで直接試してみました:

リーリー

では、php における静的継承とは正確には何でしょうか? Javaなど他の言語と静的継承の動作に違いはありますか?親クラスの静的プロパティとメソッドはオーバーライドされますか?継承後の静的プロパティのコピーは 1 つだけですか?継承実装の原則は何ですか?

返信内容:

インターネット上では、静的プロパティとメソッドの継承に関する質問に対する答えは、あらゆる種類の奇妙なものなので、コードを使用して直接試してみました:

リーリー

では、php における静的継承とは正確には何でしょうか? Javaなど他の言語と静的継承の動作に違いはありますか?親クラスの静的プロパティとメソッドはオーバーライドされますか?継承後の静的プロパティのコピーは 1 つだけですか?継承実装の原則は何ですか?

いくつかのポイントに分けてみましょう:

1. 静的メンバーはアクセス制御キーワードを使用して変更でき、継承および書き換えが可能です
つまり、サブクラスは親クラスの静的変数とメソッドを継承できます...「キーワード」ルールに従います

2. サブクラスがオーバーライドしない場合、サブクラスは実際に親クラスの静的メソッドを呼び出します
これも、継承の基本ルールについて説明する必要はありません。

3. 静的メンバーホルダーはオブジェクトではなくクラスであるため、クラスの複数のインスタンスは同じ静的属性を共有します。あるインスタンスの静的属性を変更すると、別のインスタンスの静的属性に影響しますこれが重要なポイントです。 , 単一列モードでもこの機能が使用されることをよく理解してください。

つまり、コード内の self::$var とparent::$var は、実際には親クラスの $var を指していることになります。

最後に例を示します:

シングルトン モードでは、$var はデータベース接続として理解でき、親クラスが接続を生成した後、継承されたサブクラスはこの接続を直接使用してデータベースに接続できます。
しかし、サブクラスがそれ自体で接続 $var を生成する場合、それを使用するときにそれが self::$var であるか、parent::$var であるかを区別する必要があります。これは、2 つの値が異なる可能性があるためです。接続されているデータベースも異なります。それがマスターとスレーブだったらどうでしょうか。ははは。

コーディングを楽しんでください~

このような質問には、ここで何度か答えています。読めばわかります。

はい、静的属性のコピーは 1 つだけです。

そのため、静的属性を使用してシングルトン パターンを記述する場合は注意してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

CakePHP の日付と時刻

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

CakePHP ファイルのアップロード

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

CakePHP ルーティング

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP について話し合う

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

CakePHP プロジェクトの構成

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP クイックガイド

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

CakePHP バリデータの作成

See all articles