如果是引入类的话,你就需要实例化这个类,$test = new test()echo $test->$a
如果是继承类的话,你就可以直接使用:$this->a【前提你的$a在父类中不是私有的】
在类加载的时候就会分配内存,可以通过类名直接去访问;非静态成员(变量和方法)属于类的对象,所以只有在类的对象产生(创建类的实例)时才会分配内存,然后通过类的对象(实例)去访问。在一个类的静态成员中去访问其非静态成员之所以会出错是因为在类的非静态成员不存在的时候类的静态成员就已经存在了,访问一个内存中不存在的东西当然会出错:class CA{private:int a//非静态成员,创建类的实例时分配内存,类的不同实例对应不同的内存区域
PHP访问类的属性、方法使用箭头语法(->)。这里我给你一个例子供你参考:
<?phpclass MyClass { // 定义MyClass类
public $name // 定义了一个公有属性
protected $_age // 定义了一个保护属性
private $_email // 定义了一个私有属性
public function my_method() { // 定义my_method方法
}
protected function _my_method2() { // 定义_my_method2方法
}
}
$obj = new MyClass // 实例化
$obj->name = 'noname' // 设置name属性
$obj->_age = 12 // 这是错误的,不能设置保护属性
$obj->address = 'King Street.' // 设置一个未声明的属性是允许的,效果和公有属性类似,但未赋值前不能使用。
$obj->my_method() // 调用公有方法
$obj->_my_method2() // 这是错误的,不能调用保护方法
你需要理解继承、公有、保护和私有的概念。
继承:子类继承父类的公有、保护属性和方法。
公有:类的实例可以访问的属性和方法。
保护:只能在类的内部及其子类内部访问的属性和方法。
私有:只能在类的内部访问的属性和方法。
这是个很基础的问题,建议你多看书。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)