萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> php5中public,private,protected 三種類屬性的區別

php5中public,private,protected 三種類屬性的區別

本文章來給大家介紹在php5中public,private,protected他們三者的區別,他們三個都是用於類中,但是屬性完全不同。

public: 公有屬性或方法

在子類中可以通過self::var 或self::method 來調用 ,可以通過parent::method來調用父類中的方法,但不能調用公有屬性.

在實例中可以通過$obj->var或self::method 來調用

protected: 受保護類型

在子類中可以通過self::var 或self::method調用, 可以通過parent::method來調用父類中的方法
在實例中不能通過$obj->var 來調用  protected類型的方法或屬性

private: 私有類型

該類型的屬性或方法只能在該類中使用,在該類的實例、子類中、子類的實例中都不能調用私有類型的屬性和方法

2.self 和 parent 的區別
a).在子類中常用到這兩個對象。他們的主要區別在於self可以調用父類中的公有或受保護的屬性,但parent不可以調用

b).self:: 它表示當前類的靜態成員(方法和屬性) 與 $this 不同,$this是指當前對象


 代碼如下 復制代碼

<?php

class BaseClass {

  public $public = 'public';

  private $private = 'private';
  protected $protected = 'protected';

  function __construct(){
  }

  function print_var(){
    print $this->public;echo '<br />';
    print $this->private; echo '<br />';
    print $this->protected; echo '<br />';
  }
}


class Subclass extends BaseClass {

  // public $public = 'public2';
  protected $protected ='protected2';
  function __construct(){
    echo $this->protected;//可以訪問,因為類中定義為受保護的,所以在本類或子類中可以,子類中還可以重復付值
    echo '<br />';
    echo $this->private;//error 因為是私有的只有在定義她的類baseclass中可以用
  }
}

  $obj1 = new BaseClass();
  $obj1->print_var();
  //echo $obj1->protected;//error 因為是受保護的,只有在本類內部或子類父類中可以調用
  //echo $obj1->private;//error 同上私有的,只有在本類內調用
  echo $obj1->public;

  echo "<hr />";

  $obj2 = new Subclass();
  echo '<br />';
  echo $obj2->public;echo '<br />';
  echo $obj2->protected;
  //echo $obj2->private;//error
  //echo $obj2->protected;//error

?>

總結

public 表示全局,類內部外部子類都可以訪問;
private表示私有的,只有本類內部可以使用;
protected表示受保護的,只有本類或子類或父類中可以訪問;

copyright © 萬盛學電腦網 all rights reserved