PHP面向对象的封装与继承

课程概要

  1. public 公有的
  2. private 私有的
  3. protected 受保护的
  4. 小结

1. public 公有的, public 可以省略

<?php
class MyClass {                     //声明一个类作为父类使用,将它的成员都声明为公有的
    $var1=100;              //声明一个私有的成员属性并给初值为100

    function printHello() {    //声明一个成员方法使用private关键字设置为公有的
        echo "hello<br>";         //在方法中只有一条输出语句作为测试使用
    }
}

class MyClass2 extends MyClass {     //声明一个MyClass类的子类试图访问父类中的公有成员
    function useProperty()          //在类中声明一个公有方法,访问父类中的公有成员
    {
        echo "输出从父类继承过来的成员属性值".$this->var1."<br>";    //访问父类中的公有属性
        $this->printHello();                                    //访问父类中的公有方法
    }
}

$subObj=new MyClass2();           / /初例化出子类对象
$subObj->useProperty();            //调用子类对象中的方法实现对父类公有成员的访问

2. private 私有的

<?php
class MyClass {                     //声明一个类作为父类使用,将它的成员都声明为私有的
    private $var1=100;              //声明一个私有的成员属性并给初值为100

    private function printHello() {    //声明一个成员方法使用private关键字设置为私有的
        echo "hello<br>";         //在方法中只有一条输出语句作为测试使用
    }
}

class MyClass2 extends MyClass {     //声明一个MyClass类的子类试图访问父类中的私有成员
    function useProperty()          //在类中声明一个公有方法,访问父类中的私有成员
    {
        echo "输出从父类继承过来的成员属性值".$this->var1."<br>";    //访问父类中的私有属性
        $this->printHello();                                    //访问父类中的私有方法
    }
}

$subObj=new MyClass2();          / /初例化出子类对象,结果出错
$subObj->useProperty();            //调用子类对象中的方法实现对父类私有成员的访问,结果出错

3. protected 受保护的

class MyClass {                      //声明一个类作为父类使用,将它的成员都声明为保护的
    protected $var1=100;             //声明一个保护的成员属性并给初值为100

    protected function printHello() {    //声明一个成员方法使用protected关键字设置为保护的
        echo "hello<br>";           //在方法中只有一条输出语句作为测试使用
    }
}

class MyClass2 extends MyClass {     //声明一个MyClass类的子类试图访问父类中的保护成员
    function useProperty()          //在类中声明一个公有方法,访问父类中的保护成员
    {
        echo "输出从父类继承过来的成员属性值".$this->var1."<br>";   //访问父类中受保护的属性
        $this->printHello();                                        //访问父类中受保护的方法
    }
}

$subObj=new MyClass2();          //初例化出子类对象
$subObj->useProperty();            //调用子类对象中的方法实现对父类保护的成员访问
echo $subObj->var1;               //试图访问类中受保护的成员,结果出错

4. 小结

修饰符 private protected public(默认)
同一个类中 OK OK OK
类的子类中 OK OK
所有的外部成员 OK