php类的访问修饰符

Posted h0000dh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php类的访问修饰符相关的知识,希望对你有一定的参考价值。

Public, protected, private

用来描述:

成员,在源代码中的哪些位置可以访问 。

Public:公共的:类内,类外,继承链类内

Protected: 类内,继承链类内。

Private:本类内。

一:Private:本类内。

<?php
class H {
// public function HgetP () {
//echo $this->p;
// echo self::$sp;
// }
public static function HgetP () {
// echo $this->p;
echo self::$sp;
}
}
class Z extends H {
//protected $p = ‘value‘;
private $p = ‘value‘; //$p是私有的,只能在本类内部调用
public static $sp = ‘static-value‘;
// public function ZgetP () {
// echo self::$sp;
// }
public static function ZgetP () {
// echo $this->p;
echo self::$sp;
}
}
class K extends Z {
public function KgetP () {
echo $this->p;
// echo self::$sp;
}
//public static function KgetP () {
//echo $this->p;
//echo self::$sp;
//}
}
//echo H::HgetP();
//echo Z::ZgetP();
//echo K::KgetP();
$o = new K;
$o->KgetP();//输出:Notice: Undefined property: K::$p
echo "<hr/>";
var_dump($o);//输出:object(K)#1 (1) { ["p":"Z":private]=> string(5) "value" }
$o->ZgetP(); //输出: static-value

 

 

二 Protected: 类内,继承链类内。(在类的继承的体系内都可以调用)

<?php
class H {
// public function HgetP () {
//echo $this->p;
// echo self::$sp;
// }
public static function HgetP () {
// echo $this->p;
echo self::$sp;
}
}
class Z extends H {
protected $p = ‘value‘; //$p是受保护的,在本类,本类的继承体系内部调用。
//private $p = ‘value‘; //$p是私有的,只能在本类内部调用
public static $sp = ‘static-value‘;
// public function ZgetP () {
// echo self::$sp;
// }
public static function ZgetP () {
// echo $this->p;
echo self::$sp;
}
}
class K extends Z {
public function KgetP () {
echo $this->p;
// echo self::$sp;
}
//public static function KgetP () {
//echo $this->p;
//echo self::$sp;
//}
}
//echo H::HgetP();//如果是静态成员,则父类不能访问子类定义的静态成员。
//echo Z::ZgetP();
//echo K::KgetP();
$o = new K;
$o->KgetP();//输出:value
echo "<hr/>";
var_dump($o);//输出:object(K)#1 (1) { ["p":"Z":private]=> string(5) "value" }
$o->ZgetP(); //输出: static-value

 

php继承:

私有成员可以被继承。

如果是静态成员,则父类不能访问子类定义的静态成员。

















































































以上是关于php类的访问修饰符的主要内容,如果未能解决你的问题,请参考以下文章

php面向对象-修饰符和抽象类和接口

php中的访问修饰符

PHP 类的继承 访问修饰符 重写

在Java和c#中如果不写访问修饰符,类和类成员默认的是啥访问修饰符?

访问修饰符

C#中类。方法。字段 的默认访问修饰符分别是啥?