<?php
class A
{
public function test() {
$this->testPrivate();
$this->testPublic();
} public function testPublic() {
echo "类A的testPublic()方法";
}
private function testPrivate() {
echo "类A的testPrivate()方法\n";
}
}class B extends A
{
public function testPublic() {
echo "类B的testPublic()方法\n";
}
private function testPrivate() {
echo "类B的testPublic()方法\n";
}
}$obj = new B();
$obj->test();
?>
输出结果是:类A的testPrivate()方法类B的testPublic()方法
为什么$this->testPrivate();
$this->testPublic();调用的方法不是属于同一个类的?
class A
{
public function test() {
$this->testPrivate();
$this->testPublic();
} public function testPublic() {
echo "类A的testPublic()方法";
}
private function testPrivate() {
echo "类A的testPrivate()方法\n";
}
}class B extends A
{
public function testPublic() {
echo "类B的testPublic()方法\n";
}
private function testPrivate() {
echo "类B的testPublic()方法\n";
}
}$obj = new B();
$obj->test();
?>
输出结果是:类A的testPrivate()方法类B的testPublic()方法
为什么$this->testPrivate();
$this->testPublic();调用的方法不是属于同一个类的?
这个描述欠妥当,private 成员只在定义的类中可访问,无论是其父类还是子类都无法访问
你可以将类 A 中的
private function testPrivate() {
echo "类A的testPrivate()方法\n";
}
去掉
在执行
$obj = new B();
$obj->test();
看看
1 子类中的test函数是继承父类而来的
2 private表明这个函数只可以在类的内部被访问
3 private不能被继承当你用子类实例化对象后,并调用父类继承而来的函数时,这个函数是属于父类的(虽然被子类继承)
而private的函数只能在内部被使用
所以这个属于父类的函数如果需要调用private函数的话,那么他只能调用父类中的private。public可以被继承,没有此问题
private: 私有的。只能被自身调用
protected: 受保护的。只能被自身和子类调用。C语言家族都通用的这3个定义。