zoukankan      html  css  js  c++  java
  • PHP面向对象之私有属性继承和重写 private

    私有属性继承和重写

    • 说明
      • 私有属性可以继承但不能重写

    私有-受保护

    • 代码分析(私有-受保护)
      • showA()和showB()中的$this都表示B的对象,B中继承了A的私有属性,所以B中有两个$name
      • 在showA()中只能访问A中的$name,不能访问B中的$name
      • 在showB()中只能访问B中的$name,不能访问A中的$name
    <?php 
    class A {
      private $name='PHP';
    	public function showA() {
        echo $this->name,'<br>';	//PHP
        var_dump($this);
    	}
    }
    class B extends A {
    	private $name='Java';
    	public function showB() {
        echo $this->name,'<br>';	//Java
    	}
    }
    $obj=new B();
    $obj->showA();
    $obj->showB();
    ?> 
    

    受保护

    • 代码分析(受保护)
      • private 私有属性,只能在类的内部访问,所以showA()可以访问A中的$this,而showB()只能访问B中的$this
      • protected 保护属性,能够在继承间属性继承,所以showA()和showB()都能够访问A中的$this
    <?php 
    class A {
      protected $name='PHP';
    	public function showA() {
        echo $this->name,'<br>';	//PHP
        var_dump($this);
    	}
    }
    class B extends A {
    	public function showB() {
        echo $this->name,'<br>';	//PHP
    	}
    }
    $obj=new B();
    $obj->showA();
    $obj->showB();
    ?> 
    

    受保护-公有

    • 代码分析(受保护-公有)
      • B中将A的$name重写,所以$obj中只有一个$name,($name='Java')
      • 不管$this在哪个方法中访问,就只能访问这个$name
    <?php 
    class A {
      protected $name='PHP';
    	public function showA() {
        echo $this->name,'<br>';	//Java
        var_dump($this);
    	}
    }
    class B extends A {
      public $name='Java';
    	public function showB() {
        echo $this->name,'<br>';	//Java
    	}
    }
    $obj=new B();
    $obj->showA();
    $obj->showB();
    ?> 
    

    私有-公有

    • 代码分析(私有-公有)
      • 在showA()中既能访问私有的$name,也能访问公有的$name,但是私有的比公有的权限高,所以输出PHP
      • 在showB()中不能访问私有的$name,只能访问公有的$name,所以输出Java
    <?php 
    class A {
      private $name='PHP';
    	public function showA() {
        echo $this->name,'<br>';	//PHP
        var_dump($this);
    	}
    }
    class B extends A {
      public $name='Java';
    	public function showB() {
        echo $this->name,'<br>';	//Java
    	}
    }
    $obj=new B();
    $obj->showA();
    $obj->showB();
    ?> 
    
  • 相关阅读:
    织梦开发——相关阅读likeart应用
    织梦标签教程
    织梦专题调用代码
    HIT 2543 Stone IV
    POJ 3680 Intervals
    HIT 2739 The Chinese Postman Problem
    POJ 1273 Drainage Ditches
    POJ 2455 Secret Milking Machine
    SPOJ 371 Boxes
    HIT 2715 Matrix3
  • 原文地址:https://www.cnblogs.com/SharkJiao/p/14117075.html
Copyright © 2011-2022 走看看