猿问

php 方法的访问控制

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,但是现在报错了。
?>

绝地无双
浏览 394回答 6
6回答

呼唤远方

private 只能在当前申明类的内部进行调用 protected 在当前申明类或者当前申明类的继承类内部可以调用 public 没限制 实例化之后的对象就只能访问public的

拉莫斯之舞

private 是不允许外部访问的。

至尊宝的传说

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(); // 错误

qq_花开花谢_0

private 不能 被继承,protected 能被继承,不能被外部访问,public 能被继承,能被外部访问,楼上有误

慕尼黑5688855

很简单 父类的私有方法无法被继承,而继承父类的testpublic被覆盖,最后子类只有原来的你写的两个方法,而private代表私有,只允许在本类中访问,内外部访问不了,所以报错!

MMMHUHU

首先。private定义的方法是可以被继承的。但是private定义的方法不可以在类外通过其他方式去调用的。楼主尝试调用的话,应该能看到非法操作
随时随地看视频慕课网APP
我要回答