PHPオブジェクト指向学習

WBOY
リリース: 2016-06-23 14:37:59
オリジナル
913 人が閲覧しました


最近、他の人と一緒に一連の 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 の学習に役立つことを願っています。とにかく、私はここ数日間オブジェクト指向のメソッドをレビューすることで多くのことを学びました。生徒たちに何か新しいことを学ぶよう思い出させてください!
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート