ホームページ > バックエンド開発 > PHPチュートリアル > phpoopの特徴は何ですか? php oop思考の3大特徴を紹介

phpoopの特徴は何ですか? php oop思考の3大特徴を紹介

不言
リリース: 2023-04-03 12:10:02
オリジナル
7076 人が閲覧しました

php oop 思考の 3 つの大きな特徴は、カプセル化、継承、ポリモーフィズムです。ここで、php opp 思考について詳しく説明します。その後、詳しく見ていきましょう。opp 思考の 3 つの大きな特徴とphpは思いました。
カプセル化

カプセル化とは、オブジェクトのプロパティと動作を独立した単位に結合することです。
クラスのカプセル化には 2 つの手順が必要です。最初の手順は、クラスをプライベート化することです。2 番目の手順は、set と get を使用して値を読み取って代入することです。
利点は、クラスの実装の詳細が隠蔽されることです。ロジックの追加が容易で制御性が高く、属性に対する無理な操作が制限され、コードの修正が容易になり保守性が向上します。

__get と __set
一般的に、クラスをプライベートにする方が現実的なロジックに沿っています。
値の取得と適用には、2 つの事前定義関数が使用されます。
__get 取得される値は通常、ドメインの値です。
__set 設定される値は、通常、ドメインの値です。
__call オブジェクトに存在しないメソッドが呼び出された場合、エラーが発生します。 call() は、この状況を処理するメソッドです。

静的プロパティとメソッド
静的メソッドを宣言するための static キーワード
static 静的変数はクラス内に静的変数を生成し、すべてのクラスで共有できます。 「初期化静的セグメント」内。クラスが初めてロードされるときに配置されるため、ヒープ メモリ内のすべてのオブジェクトで共有できます。
Usage: self::$static プロパティ、self: :static メソッド

static function p(){
echo self::$country;
echo self::PI;//访问常量
//echo $this->name;在静态方法中只能操作静态属性
//self::p();
}
ログイン後にコピー

外部呼び出し: Class::$static プロパティ、Class::static メソッド

const キーワード: 定数の生成に使用されます。定数は、変更できません 定数は大文字です
const CONSTANT = '定数値'; 定数を生成します
echo self::CONSTANT;//内部クラスアクセス
echo ClassName::CONSTANT;//外部クラスアクセス

継承
#クラス B のオブジェクトは、クラス A のすべてのプロパティと動作を持ちます。これをクラス A の B の継承と呼びます。
クラスが複数のクラスからプロパティとサービスを継承する場合、これは多重継承と呼ばれます。通常、継承するクラスをサブクラスと呼び、継承されたクラスを親クラスと呼びます。PHP では単一の継承しかありませんが、親クラスは存在します。複数のクラスから継承できますが、サブクラスは親クラスを 1 つしか持つことができませんが、関連する継承が許可され、継承を通じてクラスの定義を減らすことができます。
extende は継承関係を宣言します
構文形式: class B extends A この例は、B が A を継承することを示します
クラスの外部アクセスはサブクラスに対して有効です
サブクラスと親クラスの属性とメソッド
サブクラス親クラスのすべての内容を継承しますが、親クラスのプライベート部分には直接アクセスできません
サブクラスに新しく追加された属性とメソッドは親クラスの拡張です
サブクラスで定義された名前には、親クラスと同じ名前 属性は親クラスの属性のオーバーライドであり、同じ名前のメソッドも親クラスのメソッドのオーバーライドです

オーバーライドされたメソッド
サブクラスでは、parent を使用します親クラスとメソッドのオーバーライドされた属性にアクセスするには
parent::__construce();
parent::$name;
parent::fun();

元の属性を上書きします親クラスの
clone オブジェクト構文 形式 $c=clone $p; $c の object $p 出力 echo $c->name;

オブジェクト比較
===2 つの比較演算子。
== は 2 つのオブジェクトの内容を比較します。
=== は比較対象のハンドル、つまり参照アドレスです。

instanceof 演算子は、オブジェクトが特定のクラスに属しているかどうかを検出するために使用されます。その型が属している場合は true を返し、そうでない場合は false を返します。クローン作成後に元のオブジェクトの内容を変更したい場合は、__clone() を使用して元のプロパティとメソッドを書き直す必要があります。

function __clone(){
$this->name="我是一个克隆人";
}
ログイン後にコピー

final は、クラスが最終バージョンであることを意味します。サブクラスから呼び出すことはできません

ポリモーフィズム

ポリモーフィズムとは、親クラスで定義された属性または動作がサブクラスに継承された後、異なるデータ型を持つことができること、または異なるデータ型を持つことができることを意味します。さまざまな行動。これにより、同じプロパティまたは動作が親クラスとそのさまざまなサブクラスで異なるセマンティクスを持つことが可能になります。

つまり、同じメソッドをサブクラスと親クラスで実行した結果は異なります。

class A {
function info(){
echo “A INFO”;
}
}
class B extends A {
function info(){
echo “B INFO”;
}
}
class C extends A {
function info(){
echo “C INFO”;
}
}
function printinfo($obj){
function printinfo(A $obj){
if($obj instanceof A)
$obj->info();
$obj->info();
}
}
$a=new A(); $b=new B(); $c=new C();
printinfo($a); //输出A INFO
printinfo($b); //输出B INFO
printinfo($c); //输出C INFO
ログイン後にコピー

抽象メソッドと抽象クラス

抽象メソッドは、サブクラスのテンプレートとして使用されます。


abstract class Person{
public $name;
abstract function getInfo();
}
ログイン後にコピー

抽象クラスは使用できません。抽象クラスには抽象メソッドが必要です。ただし、動的関数は抽象クラスで定義できます。

インターフェイス
クラスがインターフェイスを継承する場合、インターフェイスのすべてのメソッドをオーバーライドする必要があります。インターフェイスは定数のみを宣言できます。インターフェイスのメソッドは共有として定義する必要があります。そうしないと継承できません。インターフェイスは次のものを継承できます。複数のインターフェイス
文法:

interface PCI{
const TYPE="PCI";
//public $name; error
function start();
function stop();
}
接口中的方法可以声明为static
interface A{ function a();}
interface B{ function b();}
interface C extends A{ function c();}
class D implements B,C{
function a(){}
function b(){}
function c(){}
}
ログイン後にコピー
関連する推奨事項:

PHP OPP メカニズムとパターンの概要 (抽象クラス、インターフェイス、およびコントラクト プログラミング)_php の例

以上がphpoopの特徴は何ですか? php oop思考の3大特徴を紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート