class Bar{
public function testPublic(){
echo "Bar:testPublic";
}
private function testPrivate(){
echo "Bar:testPrivate";
}
}class Foo extends Bar{
public function testPublic(){
echo "foo:testPublic";
}
private function testPrivate(){
echo "foo:testPrivate";
}
}$obj=new Foo;$obj->testPublic();$obj->testPrivate();//报错不是很理解,Foo继承了Bar,但是在Foo中有重写了testPublic和testPrivate,就private来说,就应该是Foo里面的private,但是现在报错了。?>
6 回答
![?](http://img1.sycdn.imooc.com/545867280001ed6402200220-100-100.jpg)
呼唤远方
TA贡献1856条经验 获得超11个赞
private 只能在当前申明类的内部进行调用
protected 在当前申明类或者当前申明类的继承类内部可以调用
public 没限制
实例化之后的对象就只能访问public
的
![?](http://img1.sycdn.imooc.com/545862e700016daa02200220-100-100.jpg)
至尊宝的传说
TA贡献1789条经验 获得超10个赞
1、private修饰符无法在类实例化后直接调用
2、private可以继承、可以被重写,你可以在Foo Class 内调用父类的testPrivate,就是不能再实例化后调用
class Foo extends Bar{
public function testPublic(){
echo "foo:testPublic";
}
public function getTestPrivate(){
$this->testPrivate();
}
private function testPrivate(){
echo "foo:testPrivate";
}
}
$foo = new Foo();
$foo -> testPublic(); // 正确
$foo -> getTestPrivate(); // 正确
$foo -> testPrivate(); // 错误
![?](http://img1.sycdn.imooc.com/5333a2320001acdd02000200-100-100.jpg)
慕尼黑5688855
TA贡献1848条经验 获得超2个赞
很简单 父类的私有方法无法被继承,而继承父类的testpublic被覆盖,最后子类只有原来的你写的两个方法,而private代表私有,只允许在本类中访问,内外部访问不了,所以报错!
- 6 回答
- 0 关注
- 393 浏览
添加回答
举报
0/150
提交
取消