PHPオブジェクト指向学習

Jun 23, 2016 pm 02:37 PM


最近、他の人と一緒に一連の php プログラムを開発しましたが、自分はオブジェクト指向に関しては馬鹿だと感じたので、オブジェクト指向の学習を再度強化し、ここ数日でオブジェクト指向のことを整理しました。そしてそれをみんなにシェアしました! !

オブジェクト指向の 3 つの主要な機能:

カプセル化 - 内部実装の隠蔽と外部インターフェイスの安定化

継承 - サブクラスは親クラスのメンバーを継承してコードの再利用を実現します

ポリモーフィズム - 異なるサブクラスが同じメッセージに対して操作を実行します反応

1. インターフェース - この仕様に準拠することで機能を実現できる仕様の集合です

PHP では、インターフェースを定義することで、クラスの動作を制約することができる仕様および標準でもあります。特定の実現については指定しません。

インターフェイスは、特定の関数をカプセル化するために結合される暗黙的なパブリック メソッドとプロパティのコレクションです。インターフェイスを定義したら、クラスに実装できます。このようにして、クラスはインターフェイスで指定されたすべてのプロパティとメンバーをサポートできます。

注:
インターフェースは単独で存在することはできません。インターフェイスはクラスと同じ方法ではインスタンス化できません。インターフェイスには、そのメンバーを実装するコードを含めることはできませんが、メンバー自体を定義することのみが可能です。インターフェイスの実装は、インターフェイスを参照するクラスに実装する必要があります。

1 つのクラスは複数のインターフェイスをサポートでき、複数のクラスが同じインターフェイスをサポートすることもできます。したがって、インターフェイスの概念により、ユーザーや他の開発者が他の人のコードを理解しやすくなります。

2. ポリモーフィズム

1. 同じメッセージを受信したときに異なる動作を示す異なるオブジェクトを指します

3. 抽象クラスは次のとおりです。 2. 抽象クラスは、特定の実装メソッドを明確に提供しません。 3. 抽象クラスは、そのサブクラスによってその抽象メソッドを実装する必要があります (サブクラスも抽象である場合を除きます)。
4.インスタンス化

5. 抽象クラスはロックできない

4. 抽象クラスの使用場面

1. 抽象クラスと抽象メソッドは、親クラスによって提供され、サブクラスの動作を制約します

3. 親クラスはいくつかの共通の動作を提供できます
以上がオブジェクト指向についての私のまとめです。 以下は、PHP におけるオブジェクト指向の重要な点と難しさについて詳しく説明します。
カテゴリー: [url=http://www.t00ls.net/#viewSource]リンク タグのプレビュー ソース コード[/url] [url=http://www.t00ls.net/#printSource]リンク タグの印刷[/url] ][url=http://www.t00ls.net/#about]リンクタグ about[/url]01
02/*

03 クラスの基礎知識

04 1. クラスは class キーワードを使用します定義、クラス名の各単語の最初の文字は大文字にする必要があります

05 2. クラスの属性はカプセル化キーワード (public、protected、private) で変更する必要があります

06 3. クラスのメソッドカプセル化キーワードを使用して変更することはできません。デフォルトは次のとおりです: public

07 4. クラス内のコンストラクター: __construct(){} (デフォルトでは空) は属性を初期化できます。

08 任意の数のパラメーターを使用してコンストラクターをオーバーロードすることもできます。注: PHP にはコンストラクター

09 が 1 つだけ存在できます。

10 5. クラス内のデストラクター: __destruct(){}

11*/

12/*

13 クラスのカプセル化キーワード

14 1. public -- public

15 2. protected -- protected

16 3. private -- private

17

18 読み取りおよび書き込みメソッドが生成されるのは、保護されたカプセル化キーワードまたはプライベート カプセル化キーワードの使用のためです。

19 そのため、書き込みメソッドはデータの正当性を検証できます。 read メソッドは、保護されたプロパティまたはプライベート プロパティを外部変更から保護できます。

21

22 4. __get($n){return $this->$n;} メソッドの読み込み

23 5. __set($n,$v){$this->$n=$v ;} メソッドの書き込み

24

25*/

26class People{

27 private $name;

29 private $sex;または

32 function __construct($name,$age=18,$sex="男"){

33 $this -> 名前 = $name

34 $this ->

35 $this; -> セックス = $sex;

36 echo $this ->

37 }

38

39 // デストラクター

41 // echo "{ $this->name} がリリースされました!";

42 }

43

44 //属性を読み取る

45 function __get($n){

46 if($n == " name"){

47 return $this ->

48 }

49 }

50

51 // 属性を書き込む

52 function __set($n,$v){

53 if($n == "名前"){

54 $this -> $n = $v;

55 }

56 }

57

58 return " おめでとうございます { $ This-& gt; name} , 継承されたクラスの名前: 親クラス (基本クラス)

67 3. 継承されたクラスの名前: サブクラス (派生クラス)

68 4. 単一継承

69 5.は推移的です。つまり、親クラスには があります。 はい、サブクラスにも

があります

70 6. サブクラスのカプセル化キーワード レベルは親クラスのカプセル化キーワード レベルより低くすることはできません

71 7. 親クラスのコンストラクターも次のようになります継承されました

72 8. オーバーロード

73*/

74class Stu extends People{

75

76

77 public function show(){

78 returnparent::show()."O(∩_∩ ; url=http://www.t00ls.net/#viewSource]リンク タグのプレビュー ソース コード[/url] [url=http://www.t00ls.net/#printSource]リンク タグの印刷[/url][url= http://www.t00ls.net/#about]リンクタグ about[/url]01

02/*

03 抽象クラス

04 1. abstract キーワードで変更されたクラスを抽象クラスと呼びます。クラスには少なくとも 1 つの抽象メソッドがあり、

05 は具象メソッドを持つことができます。

06 2. 抽象クラスはインスタンス化できず、ロック (最終変更) もできず、継承のみ可能です

07 3. 抽象クラスは、その抽象メソッドをそのサブクラスによって実装する必要があります (サブクラスも抽象である場合を除く)

08*/

09abstract クラス Animal{

10 protected $name;

12 protected $weight;

15

16 要約function Eat($name);

17

18 抽象関数 sleep();

19

20 static function show($what){

21 return "私は {$what->name} です! " ;

22 }

23}

24

25//Dog クラス

26class Dog は Animal{

27 function __construct($name,$age,$weight){

28 $this -> ;名前 = $name;

29 $this -> 年齢 = $age;

31 }

32

33 関数 Eat($n) 34 return $this->name."食べる".$n;

35 }

36

37 function sleep(){

38 return $this->name."ぐっすり眠れます!";

39 }

40

41 function wangwang(){

42 return "Wow! ";

44}

45

4 6//Cat class

47class Cat extends Animal{

48関数__construct($name,$age,$weight){

49 $this -> 名前 = $name;

50 $this -> 年齢 = $age; ;

52 echo $this->miaomiao();

53 }

54

55 function Eat($n){

56 return $this->$n;

57 }

58

59 function sleep(){

60 return $this->name.『ぐっすり眠れます! ";

61 }

62

63 function miaomiao(){

64 return "ニャー! ! ! ";

65 }

66}

67

68$dog = new Dog("Wangcai",4,"10kg");

69echo $dog->sleep();

70echo " " ;

71$cat("となりのトトロ",2,"5kg")

73echo $cat->sleep();

75echo動物::show($dog);

76echo "";

78?>

インターフェース: [url=http://www.t00ls.net/# viewSource]リンク タグのプレビュー ソース コード[/url] [url=http://www.t00ls.net/#printSource]リンク タグの印刷[/url][url=http://www.t00ls.net/#about]リンクタグ about[/url]01

02interface IUsb{

03 const name1="3.0 インターフェース";

04 function type1($what);

06}

... IUsb,IApi を実装します {

15

16 function type1($what){

17 if($what == IUsb::name1){

18 return IUsb::name1.$this-> power1();

19 }

20 else{

21 return "インターフェースが間違っているため使用できません。 ";

22 }

23 }

24

25 function power1(){

26 return "インターフェースは正しい、電源はオンです...";

27 }

28

2 9関数タイプ 2( ){}

30

31 function power2(){}

32}

33

34class Mp3 は IUsb{

35 public $name = IUsb::name1; を実装します。 36 機能タイプ 1 ( $s) {}

37 関数 power1(){}

38}

39$p = new Pc();

41echo $p -> ($mp3- >name);

42?>

皆さんの PHP の学習に役立つことを願っています。とにかく、私はここ数日間オブジェクト指向のメソッドをレビューすることで多くのことを学びました。生徒たちに何か新しいことを学ぶよう思い出させてください!
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

PHPロギング:PHPログ分析のベストプラクティス PHPロギング:PHPログ分析のベストプラクティス Mar 10, 2025 pm 02:32 PM

PHPロギングは、Webアプリケーションの監視とデバッグ、および重要なイベント、エラー、ランタイムの動作をキャプチャするために不可欠です。システムのパフォーマンスに関する貴重な洞察を提供し、問題の特定に役立ち、より速いトラブルシューティングをサポートします

Laravelでフラッシュセッションデータを使用します Laravelでフラッシュセッションデータを使用します Mar 12, 2025 pm 05:08 PM

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Laravelテストでの簡略化されたHTTP応答のモッキング Laravelテストでの簡略化されたHTTP応答のモッキング Mar 12, 2025 pm 05:09 PM

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

PHPにおける後期静的結合の概念を説明します。 PHPにおける後期静的結合の概念を説明します。 Mar 21, 2025 pm 01:33 PM

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 Mar 28, 2025 pm 05:12 PM

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。

See all articles