We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
封装性是面向对象编程中的三大特性之一,封装就是把对象中的成员属性和成员方法加上访问修饰符,使其尽可能隐藏对象的内部细节以达到对成员的访问控制(切记不是拒绝访问)。
//PHP支持如下3种访问修饰符 public (公有的、默认) private (私有的) protected (受保护的)
只要再声明成员或成员方法时,使用private关键字修饰就是实现了对成员的私有封装。
class Person { private $name; private $age; private function say(){ } }
封装后的成员在对象的外部不能直接访问,只能在对象的内部方法中使用$this访问。
class Person { private $name ; public function say (){ return $this -> name; } }
魔术方法只针对 protected或者private的属性
//set方法 public function __set($key,$value){ //魔术方法的set只针对 protected或者private的属性 if($key == 'name' && $value == "laowang"){ $this -> name = "xiaowang"; } } $xw ->age = 18;
//get方法 public function __get($key){ if($key == 'age'){ return 'girl not till you'; } } echo $xw ->age;
当成员属性可以在外部访问的时候isset判断为true、放成员属性无法在外部访问的时候isset判断为false .
//isset方法 public function __isset($key){ if($key == "age"){ return true; } } var_dump(isset($xw -> age)); //false //var_dump 打印输出
把对象中的属性销毁
//unset方法 public function __unset($key){ if($key == "age") { unset($this -> age); } } unset($xw -> age);
PHP只支持单继承,不允许多重继承.一个子类只能有一个父类,不允许一个子类直接继承多个类,但一个类可以被多个类继承,可以有多层继承,即一个雷可以继承某一个类的子类,如类B继承了类A,类C又继承了类B,那么类C也间接继承了类A。
class A { } class B extends A{ }
对象的多态:是指咋父类中定义的属性或行为被子类继承之后,可以具有不同的数据类型或表现出不同的行为。这使得同一个属性或方法在父类及其各个子类中具有不同的语义。
多态中最关键的实现形式就是函数的重载与重写。
在子类里面允许重写(覆盖)父类中的方法,使用parent访问父类中被覆盖的属性和方法
parent::construct(); parent::fun();
class Person { public $name; private $age; protected $money; public function __construct($name,$age , $money){ $this -> name = $name; $this -> age = $age; $this -> money = $money; } public function cardInfo(){ echo "name-> ".$this->name . " age->". $this->age . " money". $this->money; } } class YellowPerson extends Person{ function __construct($name,$age,$money){ parent::__construct($name,$age,$money); } public function cardInfo($pp){ //如果不加parent::cardInfo,就表示重写了父类的方法,再重新调用一下父类的方法。 parent::cardInfo(); echo $pp; } public function getMoney(){ echo $this -> money; } } $s = new YellowPerson("xiaowang",22,100); $s -> cardInfo(11); echo $s -> name; //公有属性可以继承 // echo $s -> age; //私有属性无法继承 echo $s -> getMoney(); //外部不能访问,但是可以继承过来
The text was updated successfully, but these errors were encountered:
No branches or pull requests
PHP面向对象之封装性
设置私有成员与私有成员的访问
封装的修饰符
封装性是面向对象编程中的三大特性之一,封装就是把对象中的成员属性和成员方法加上访问修饰符,使其尽可能隐藏对象的内部细节以达到对成员的访问控制(切记不是拒绝访问)。
修饰符的访问权限
设置私有成员
只要再声明成员或成员方法时,使用private关键字修饰就是实现了对成员的私有封装。
访问私有成员
封装后的成员在对象的外部不能直接访问,只能在对象的内部方法中使用$this访问。
魔术方法
魔术方法只针对 protected或者private的属性
__set()
__get()
__isset()
当成员属性可以在外部访问的时候isset判断为true、放成员属性无法在外部访问的时候isset判断为false .
__unset()
把对象中的属性销毁
PHP面向对象之继承性
类继承的应用
PHP只支持单继承,不允许多重继承.一个子类只能有一个父类,不允许一个子类直接继承多个类,但一个类可以被多个类继承,可以有多层继承,即一个雷可以继承某一个类的子类,如类B继承了类A,类C又继承了类B,那么类C也间接继承了类A。
继承中修饰符的访问权限
PHP面向对象之多态
对象的多态:是指咋父类中定义的属性或行为被子类继承之后,可以具有不同的数据类型或表现出不同的行为。这使得同一个属性或方法在父类及其各个子类中具有不同的语义。
多态中最关键的实现形式就是函数的重载与重写。
子类中重载父类的方法
在子类里面允许重写(覆盖)父类中的方法,使用parent访问父类中被覆盖的属性和方法
例子
The text was updated successfully, but these errors were encountered: