当前位置:编程学习 > php >>

php 从父类继承的方法无法访问子类的私有属性

class Base { public function echoProperty() { echo $this->id; } } class subClass extends base { private $id; //public $id; function __construct() { $this->id = '15'; } } $class = new subClass(); $class->echoProperty(); 结果:Fatal error: Cannot access private property subClass::$id in D:\www\test\php\domains_manager\classes\db\test.php on line 31 这是怎么一个原理呢?从父类继承的方法应该就是相当于自己的方法,没有道理不能访问自己的私有属性吧?如果把private改为public就可以访问了。
追问:可能从继承的机制上说一下吗?现在我是在子类上定义一个私有的属性,而不是在父类上定义。子类继承父类的方法时,这个方法不算是子类自己拥有的吗?可能从继承的机制上说一下吗?现在我是在子类上定义一个私有的属性,而不是在父类上定义。子类继承父类的方法时,这个方法不算是子类自己拥有的吗?
答案:private表示私有的,只有本类内部可以使用。如果不想继承但又能在外部使用 ,请用protected
其他:<?php
class Base
{
	protected $id;
	public function __construct()
	{
		$this->id = 15;
	}
}
class subClass extends base
{
	public function echoProperty()
	{
		echo $this->id;
	}
}
$class = new subClass();
$class->echoProperty();
?> 用private 修饰的方法只能在本类产生的对象中使用,protected修饰的则是能在本类以及子类的对象内部调用,public修饰的则没有限制,随意访问 

上一个:php文件可以生成可运行的exe程序吗
下一个:php语言好不好学,java怎么样?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,