検索
ホームページphp教程php手册PHP5.0 オブジェクト モデルの抽象メソッドと抽象クラスの探索

PHP5.0 オブジェクト モデルの抽象メソッドと抽象クラスの探索

Jun 13, 2016 pm 12:46 PM
層状のそして存在する物体抽象的な探検する方法構築するモデルプログラム親切構造合格のために

オブジェクト指向プログラムは、クラスの階層構造を通じて構築されます。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;

public function getArea() //面積計算メソッドをオーバーライドします

{
return(($this->base * $this->height)/2)
}

public function getNumberOfSides() //エッジカウントメソッドをオーバーライドします

{
return(3)
}
}

//具体的なクラス エンティティ クラス 四辺形

クラス Rectangle extends Polygon
{
public $width;
public $height;
public function getArea()

{

return($this->width * $this->height)
}

パブリック関数 getNumberOfSides()

{

return(4)
}
}

//具象クラス エンティティ クラス サークル

クラス Circle extends Shape

{
public $radius

public function getArea()

{

return(pi() * $this->radius * $this->radius)
}
}

//具体的なルートクラスはカラークラスを定義します。

class Color

{
public $name
}

$myCollection = array(); // シェイプのコレクションを作成し、配列に入れます

// 長方形を作成します

$r = new Rectangle;

$r->height = 7;
$myCollection[] = $r;
設定を解除($r)

// 三角形を作成します
$t = new Triangle;

$t->height = 5;

設定を解除($t)

// 円を作成します
$c = new Circle;
$myCollection[] = $c;
>

//色を作成します

$c = 新しい色;
$myCollection[] = $c;

foreach($myCollection as $s)
{

if($s instanceof Shape) //$s が Shape クラスのインスタンスの場合

{
print("Area: " . $ s->getArea() .
}

if($s ポリゴンのインスタンス)

{

print("Sides: " .$s->getNumberOfSides()."n");
if($sinstanceofColor)
{
print("Color: $s->name n")
}

print("n");

}

?>

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

MantisBT

MantisBT

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

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

EditPlus 中国語クラック版

EditPlus 中国語クラック版

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

SecLists

SecLists

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