周大胖子 发表于 2018-7-22 00:42:39

PHP 类

嘛是类呢?到现在还不懂可以去死了;
不过这里有个坑我没踩完,回头踩踩!!!
    class Car
    {
      public$name = '汽车' ;   // 定义公共属性
            //可以在外部调用时根据需要改变属性的值或者赋予未定义的属性值。

      protected$shop = '4S店' ;   // 定义受保护属性
            // 子类可以调用,外部不能调用 ,但是实例化的对象无法使用【可以通过public 方法改变此值】。

      private $pop = 'laomo' ;   //定义 私有属性
            // 子类不能调用、外部不能调用;
            
      public function showShop(){
            return $this -> shop.'<br/>      }
      public function showPop(){
            return $this -> pop.'<br/>      }

      // 创建对象时,构造方法会被自动调用,构造方法可以确保必要的属性设置,并完成任何需要准备的工作
      public function __construct(){
            // $this->name = $name;      // 使用伪变量$this给每个变量赋值
            // $this->shop = $shop;
            // $this->pop = $pop;
            print '构造函数被调用<br/>      }

    }
    // 测试
    $car = new Car();
    echo $car->name;//成功
    // echo $car->shop;// 错误 受保护属性不被外部访问
    // echo $car->pop;   //错误 私有属性不被外部访问

    // 换外部方法访问
    echo $car->showShop();// 通过 函数访问内部受保护属性 成功
    echo $car->showPop();// 通过 函数访问内部私有属性 成功
   
    // 子类测试
    // // 若派生类没有定义构造方法,则它在实例化是会自动调用父类的构造方法。子类默认继承父类所有的 public 和 protected 方法,但不继承 private 方法和属性
    class Lanniao extends Car
    {
      // 这样的取值有问题parent:: 属性名是错误的, 应该是
      // public $amm = shop;

      function __construct(){
            print '进入了子类      }

      function abc(){
            $ab = parent::showShop();
            $ac = parent::showPop();
            echo '<br/>子类访问测试——————'.$ab;
            echo '<br/>子类访问测试——————'.$ac;   // 私有属性也可以这么访问 但是直接访问不行
      }
      
      
    }

    $c = new Lanniao();

    $c -> abc();
    echo $c -> name;



页: [1]
查看完整版本: PHP 类