diff --git "a/\350\246\203\346\241\202\350\216\262/20220517PHP\351\235\242\345\257\271\350\261\241.txt" "b/\350\246\203\346\241\202\350\216\262/20220517PHP\351\235\242\345\257\271\350\261\241.txt" new file mode 100644 index 0000000000000000000000000000000000000000..e6df6647488b9c5855dd15dd5192fb6f2fd5acf7 --- /dev/null +++ "b/\350\246\203\346\241\202\350\216\262/20220517PHP\351\235\242\345\257\271\350\261\241.txt" @@ -0,0 +1,259 @@ + 笔记 +一:PHP面向对象 1、类: ·属性 ·方法 2、面向对象编程的三大特点: 1.封装性:把信息封装起来。(限制) + +·public(公共成员) + +·private(私有成员) + +·protected(保护成员) + +2.继承性:PHP支持单继承,就是一个子类有且只有一个父类。 3.多态性:一个方法可以获得多个不同 的结果。 +3.构造方式: ·构造方法( __construct 对象创建时执行 ) ·有参构造 ·无参构造 ·析构方法 ( __destruct 对象被销毁之前执行 ) + + + +class Animal{ + function eat(){} + + function play(){} + +} + + +class Cat extends Animal{ + +//加个var +var $name; +var $age; +//或 +public $name; +//或 +private $age; + +//静态属性,属于类,不属于对象,全对象都可直接用。 +static $aihao ="吃鱼" +//加修饰符来区分变量和属性 + + } +方法区别 + +PHP不支持方法重载 + +function eat(){ + echo $this->name.$this->age;//重写父类方法 +} +//“->”表示调用对象 + + +function play(){ + parent->play();//调用父类 + self::sleep;//调用本类 +} + + +static function sleep(){ + +} + + + + + +//静态方法 +//静态只能用静态的,下面的name和age不是静态的,得改成静态 +static function eat(){ + echo "姓名叫".Cat::name."年龄是".Cat::age; +} + +//静态方法调用 + Cat::eat(); + +//“::”表示静态的调用 +get、set封装 + +public function getAge(){ + return $this -> age; +} + +public function setAge(){ + $this -> age = $age; +} +构造方法 + +PHP不支持方法重载,不能同时写无参和有参构造器,只能二选一 +//魔术方法,php的构造器 +function __construct($name,$age){ + $this -> name = $name; + $this -> age = $age; +} +//析构方法,当对象被销毁时执行 +function __destruct(){ + +} + + +//***销毁 +unset(<对象或者变量>); + +//***检测变量还活着没 +isset(<对象或变量>); +PHP创建一个对象 + +$a = new Cat();//无参新建对象 + +$a -> name="小白";//赋值 +$a -> setAge(20);//用set赋值年龄 + +$b = new Cat(值1,值2,值3);//有参 + +$a -> eat();//调用方法 + +echo $a ->name.$a->getAge();//用get输出年龄 +多态 + +class Animal{ + function say() {} + +} + +class newcat extends Animal{ + function say(){ + echo "喵喵" + } +} + +class dog extends Animal{ + function say(){ + echo "汪汪"; + } +} + +//依靠方法来判断对象是什么类,来调用方法 +function work($a){ + if($a instanceof animal){ + $a->say(); + else{ + echo " 不是动物"; + + } + } +} +work(new dog);//调用方法来判断类 +作业 +brand=$brand; + $this->price=$price; + } + function show(){ + echo "品牌".$this->brand."
价格为".$this->price; + } + + /** + * @return mixed + */ + public function getBrand() + { + return $this->brand; + } + + /** + * @param mixed $brand + */ + public function setBrand($brand): void + { + $this->brand = $brand; + } + + /** + * @param mixed $price + * @return car + */ + public function setPrice($price) + { + $this->price = $price; + return $this; + } + + /** + * @return mixed + */ + public function getPrice() + { + return $this->price; + } + +} +$a=new car("法拉利",300000); +$a->show(); + +//子类 +class sportscar extends car{ + function __construct($brand, $price) + { + parent::__construct($brand, $price); + } + + function run() + { + echo "名为".parent::getBrand()."的跑车,它车速能到达300速度,这台跑车的价格为".parent::getPrice(); + } + + +} +$b=new sportscar("兰博基尼",1000000); +$b->run(); + + + +//定义一个类,分别定义3个公共的属性和方法,3个受保护的属性和方法,三个私有属性和方法 + +class test{ + //公共 + public $name;//介绍 + public $age;//能吃饭 + public $sex;//能飞 + + public function show(){ + echo "介绍"; + } + public function run(){ + echo "能跑"; + } + public function eat(){ + echo "能吃"; + } + //受保护 + protected $nname;//介绍 + protected $aage;//能吃饭 + protected $ssex;//能飞 + + protected function sshow(){ + echo "介绍"; + } + protected function rrun(){ + echo "能吃饭"; + } + protected function eeat(){ + echo "能飞"; + } + //私有 + private $snname;//介绍 + private $saage;//能吃饭 + private $sssex;//能飞 + + private function rsshow(){ + echo "介绍"; + } + private function rrrun(){ + echo "能吃饭"; + } + private function eeeat(){ + echo "能飞"; + } +} \ No newline at end of file