子类中重写父类的属性是否可以访问

子类中重写父类的属性是否可以访问

子类如果重写父类的属性,是否可以在子类中进行访问,如果可以,是如何访问的。

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

4回答
扫地尼 2018-01-16 19:12:52

你好。我个人感觉子类是不能访问父类属性的,除非父类属性被定义为static静态的,因为父类未被实例化,属性在内存中未被创建!估计属性跟方法在内存中的创建规则是不一样的。谢谢!!望采纳

irise 2017-07-28 22:55:03

同学,您好!通过子类是可以获取父类的name属性值的,但是前提是子类中的属性名不能跟父类中的属性名同名了,如果同名了的话在PHP中,子类中的属性名就直接回覆盖了父类中的属性名,就像您写的例子的这种情况。下面的截图是小慕为您测试的子类中的在子类中获取父类的属性值:

http://img1.sycdn.imooc.com/climg//597b500500019ede06840607.jpg

如果解决了您的问题,请采纳!祝学习愉快!

  • 提问者 我是帅帅啊 #1
    我知道可以访问父类中的属性,现在明白了,同名属性是无法获取的。多谢
    2017-07-29 10:48:26
提问者 我是帅帅啊 2017-07-28 16:05:56

我表达的不是这个意思,实例化后$obj -> value这种方式只能访问到子类的属性。

class parentClass{
  public $name = 'Father';
  public function sayHello(){
    echo 'hello Father<br>';
  }
}

class childClass extends parentClass{
  public $name = 'Son';
  public function sayHello(){
    echo 'hello my father is';
  }
}

$obj = new childClass();
echo $obj->name;//Son

比如这个只能得到子类的name属性值,我现在想通过子类(可以在类内或者通过对象)获取到父类的name属性值(C++是可以获取到这种值的),PHP是否可以,如果可以是怎样获取的,方法的获取规则对属性不适用,我看了视频之后试了教程中的两个规则,报错。

  • 你好,确实报错,不能用parent关键字调用父类的属性,在类的内部使用parent::方法名(),实质上是将父类方法的操作拿过来执行了。而属性是一个值,我们实例化的是子类,只实现了子类的属性,父类的属性是无法调用的。
    2017-07-28 23:20:05
imooc_澈 2017-07-28 15:29:38

您好,可以,规则同方法一样,用实例化之后的对象跟->,后面加属性名就可以调用了,您可以自己动手在文件中尝试一下哦~

如果解决了您的问题,请采纳,祝学习愉快~

  • 提问者 我是帅帅啊 #1
    我表达的不是这个意思,实例化后$obj -> value这种方式只能访问到子类的属性。 class parentClass{ public $name = 'Father'; public function sayHello(){ echo 'hello Father<br>'; } } class childClass extends parentClass{ public $name = 'Son'; public function sayHello(){ echo 'hello my father is'; } } $obj = new childClass(); echo $obj->name;//Son 比如这个只能得到子类的name属性值,我现在想通过子类(可以在类内或者通过对象)获取到父类的name属性值(C++是可以获取到这种值的),PHP是否可以,如果可以是怎样获取的,方法的获取规则对属性不适用,我看了视频之后试了教程中的两个规则,报错。
    2017-07-28 16:07:39
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师