OOP面向对象基础-继承
继承
- 1个子类只能继承一个父类,1个父类让多个子类继承
- 如果子类继承了父类,子类就具有了父类的属性与方法
- 如果子类的属性或方法名与父类相同时,如果子类的开放性大于(等于)父类的,覆盖或重写 ,反之报错
继承的作用
- 提高重用性
- 方便扩展
- 方便升级
继承的特性
继承的特性一
单继承 1个父类可有多个子类 1个子类只能有1个父类继承的特性二
如果子类中的方法或属性和父类的名称相同,属性会覆盖或方法的重写,且只对子类有效重写
子类可以重写父类的属性和方法,也可以修改访问控制符,但是只能重等级高的改成等级低的,不能有低到高,建议一般不要修改访问控制符class Person
{
public $name='zz';
private $age=18;
public function say(){
echo $this->name;
}
}
class A extends Person
{
// private $name='xx';//直接爆红
public $age='19';
public function say(){
echo "age:".$this->age;
}
}
$a = new A;
echo $a->say();
操作符::
只能在类内部使用 作用:在没有声明任何实例的情况下访问类中的成员方法与属性 parent:调用父类的成员变量/方法/常量,父类私有的方法不能被继承 self:当前类的静态成员于常量 类名:调用本类变量/常量/方法class Person
{
private $name='cc';
public $age;
public function say(){
echo $this->name;
}
public function __construct(){
echo "this is a ".$this->name;
}
}
class A extends Person
{
const BIRTH = '1125';
private $sex = '女';
public function __construct(){
parent::__construct();//调用父类的构造方法
echo self::BIRTH;//1125
}
}
$a = new A;
$a->say();
链式操作
class Num
{
public $a = 10;
public function plus($num){
$this->a =$this->a+$num;
return $this->a;
}
public function plus1($num){
$this->a =$this->a+$num;
return $this;
}
}
$a = new Num();
var_dump($a->plus(12));///返回int(22)
var_dump($a->plus1(12));//object(Num)#1 (1) { ["a"]=> int(34) }
var_dump($a->plus1(10)->plus1(10)->plus(10));// 最后输出就好 int(64)
访问级别
访问级别 public private protected 内部 Y Y Y 外部 Y N N 子类 Y N Y 本站文章如未注明出处均为原创,转载请注明出处,如有侵权请邮件联系站长。