1. 程式人生 > >php高階程式設計

php高階程式設計

第一部分:OPP和模式

      第一章:抽象類、介面和契約式程式設計

               1.1:抽象類

                 1.方法原型:(prototype)是指方法的定義中剔除方法體之後的簽名。它包括存取級別、函式關鍵字,函式名稱和引數。它不包                括({})或括號內的任何程式碼。例如:public function myfunction($parameter); 就是一個方法原型。                  2.抽象類沒有為它所宣告的方法定義方法體,所以使用new是不能直接建立它的例項的。要建立例項就要寫一個類extends這個抽                象類,並實現它所宣告的所有方法。
                 3.要充分發揮抽象類的特點,須做到:                    1).如果一個類包含一個抽象方法就必須宣告為抽象類;                    2).宣告為抽象的方法,在實現時必須包含相同的或者更低的訪問許可權。例如:                       abstrct class  abstractFunction{                          protected function Afunction($paramter);                          protected function Bfunction($paramter);
                      }                       class instanceFunction extends abstractFunction{                          protected function Afunction($paramter){...} //或者public function Afunction($paramter){...}                          public function Bfunction($paramter){...}//或者protected function Bfunction($paramter){...}
                         //而不能寫成private function Bfunction($paramter){...}                       }                     3).不能用new來建立抽象類的例項。                     4).被宣告為抽象類的方法不能包含方法體。                     5).如果extends的類被宣告為abstract,則可以不用實現所有的抽象方法。                   4.抽象類的使用:                     定義一個抽象類:                     abstract class Car{                        abstract function getTheCarType($car);                     }                     要建立一個抽象類例項,必須繼承這個抽象類並實現它:                     class FastCar extends Car{                        public function getTheCarType($car){ return fastType;}                     }                     建立一個類來使用這個公共類:                     class MyCar {                        protected $carType;                        protected $carMaxSpeed;                        protected $carLimitSpeed;                        public function __construct($carType = 'fmailyUse',$carLimitSpeed = '200'){                           $this->carType = $carType;                           $this->carMaxSpeed = array();                           $this->carLimitSpeed = $carLimitSpeed;                        }                        public function jundgeSpeed(){                           if($this->careType == 'fmailyUse' && $this->carLimitSpeed >= '200'){                              echo "It's very deangerous .if the car for fmaily,it's speed should < 200";                           }else{                    echo "good ! Now,the speed is safe.";                           }                        }                     }                     使用抽象類:                     $myCar = new MyCar('fmailyUse');                     $myCar->jundgeSpeed($careType,300);