PHP5.0 オブジェクト モデルの抽象メソッドと抽象クラスの探索
オブジェクト指向プログラムは、クラスの階層構造を通じて構築されます。PHP などの単一継承言語では、クラスの継承は 1 つ以上のサブクラスを持ち、各サブクラスから 1 つ以上のサブクラスが継承されます。さらに次のレベルのサブカテゴリ。もちろん、異なる機能を実装するために複数のルート クラスが使用される場合もあります。適切に設計されたシステムでは、各ルート クラスに、アプリケーション コードで使用できる便利なインターフェイスが必要です。アプリケーション コードがルート クラスで動作するように設計されている場合は、ルート クラスを継承するサブクラスでも動作できます。
抽象メソッドは、サブクラス内の通常のメソッドと同様にプレースホルダーです (場所を占めますが、機能しません)。通常のメソッドとは異なり、コードがありません。クラス内に 1 つ以上の抽象メソッドがある場合、そのクラスは抽象クラスになります。抽象クラスをインスタンス化することはできません。抽象クラスを継承してからサブクラスをインスタンス化する必要があります。また、抽象クラスをサブクラスのテンプレートとして考えることもできます。
すべての抽象メソッドをオーバーライドすると、サブクラスは通常のクラスになります。すべてのメソッドがオーバーライドされない場合でも、サブクラスは抽象メソッドのままです。クラスに抽象メソッドが含まれる場合は (たとえ 1 つしかない場合でも)、class キーワードの前に abstract を追加して、クラスを抽象として宣言する必要があります。
抽象メソッドの宣言の構文は、一般メソッドの宣言の構文とは異なります。抽象メソッドは、一般メソッドのように中括弧 {} で囲まれた本体を持たず、セミコロン;で終わります。
例 6.13 では、getArea メソッドを含むクラス Shape を定義します。ただし、図形の形状が分からないと面積を求めることができないため、getArea メソッドを抽象メソッドとして宣言しました。 Shape オブジェクトをインスタンス化することはできませんが、例 6.13 のように、継承したり式で使用したりすることはできます。
抽象メソッドのみを含むクラスを作成する場合は、インターフェイスを定義します。この状況を説明するために、PHP にはインターフェースおよび実装キーワードがあります。抽象クラスの代わりにインターフェイスを使用し、extends の代わりに実装を使用してクラス定義を記述することも、たとえば、myClass を実装して myIterface を実装することもできます。個人の好みに応じて、これら 2 つのメソッドのどちらかを選択できます。
/*注:
2 つのメソッドは次のことを指します:
1. 抽象クラス aaa{} (aaa には抽象メソッドのみがあり、一般メソッドはないことに注意してください)
class bbb extends aaa{} (bbb では bbb の aaa の抽象メソッドを上書きします)
2. インターフェース aaa{}
クラス bbb は aaa{} を実装します (bbb の aaa の抽象メソッドを上書きします)
*/
リスト 6.13 抽象クラス
//抽象ルートクラス 抽象ルートクラス
抽象クラス Shape
{
abstract function getArea(); //抽象メソッドを定義します
}
//抽象子クラス 抽象サブクラス
抽象クラス Polygon extends Shape //Polygon
{
抽象関数 getNumberOfSides()
}
//具体的なクラス エンティティ クラス トライアングル クラス
クラス Triangle extends Polygon
{
public $base;
public $height;
{
return(($this->base * $this->height)/2)
}
{
return(3)
}
}
クラス Rectangle extends Polygon
{
public $width;
public $height;
public function getArea()
return($this->width * $this->height)
}
パブリック関数 getNumberOfSides()
return(4)
}
}
//具象クラス エンティティ クラス サークル
{
public $radius
public function getArea()
return(pi() * $this->radius * $this->radius)
}
}
//具体的なルートクラスはカラークラスを定義します。
{
public $name
}
$myCollection = array(); // シェイプのコレクションを作成し、配列に入れます
// 長方形を作成します
$r = new Rectangle;$r->height = 7;
$myCollection[] = $r;
設定を解除($r)
// 三角形を作成します
$t = new Triangle;
設定を解除($t)
// 円を作成します
$c = new Circle;
$myCollection[] = $c;
>
$c = 新しい色;
$myCollection[] = $c;
foreach($myCollection as $s)
{
{
print("Area: " . $ s->getArea() .
}
if($s ポリゴンのインスタンス)
print("Sides: " .$s->getNumberOfSides()."n");
if($sinstanceofColor)
{
print("Color: $s->name n")
}
}
?>

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。
