php中访问类属性和方法,类成员方法如何调用类成员属性和方法

类别

静态方法调用

非静态方法调用

静态属性 static $name = 'xiaoming'

self::$name

self::$name

非静态属性$name = 'xiaoming'

不能,报Fatal error,不能使用self::调用非静态属性,也不能使用$this 获取非静态属性的值

$this->name

静态方法public static function say()

self::say()

self::say()

非静态方法public function say()

php5中,不能使用$this调用非静态方法,但是可以使用self::调用

$this->say()

可以用::调用非静态方法吗?

答:可以,代码照常运行

只是提示Strict Standards: Non-static method Stu::say() should not be called statically in D:\phpStudy2014\WWW\oop\day1\test.php on line 19

当然这里也是有前提的,这个非静态方法中不能调用类成员属性.

类名可以用对象访问符->调用静态方法吗?

不可以,报错

一个对象如何调用类成员静态方法?

方法①用->符号调用,方法②用::符号调用.

一个对象如何调用类成员非静态方法?

方法①用->符号调用

方法②用::符号调用,程序正常运行,但是提示

Strict Standards: Non-static method Stu::say() should not be called statically in D:\phpStudy2014\WWW\oop\day1\test.php on line 21

静态属性跟非静态属性的区别?

非静态属性只有在类实例化对象的那一刻才在内存中开辟空间.这也就是非静态属性不需要实例化就可以调用的原因.

静态属性则在类被加载的那一刻,即使没有被实例化,也会被内存分配空间,而且即使内存中有多个实例化对象,静态属性也只有一份.

静态方法跟非静态方法的区别同上.

静态方法调用非静态属性

不能,报Fatal error

Fatal error: Access to undeclared static property: Stu::$name in D:\phpStudy2014\WWW\oop\day1\test.php on line 15

不能使用self::调用非静态属性

也不能用$this->,否则报错,Fatal error: Using $this when not in object context in D:\phpStudy2014\WWW\oop\day1\test.php on line 15

静态方法中不能使用$this关键字

因为静态方法在加载的过程中,内存就给其分配了空间,所以它不属于任一对象.

故有以下报错

Fatal error: Using $this when not in object context in D:\phpStudy2014\WWW\oop\day1\test.php on line 15

为什么静态方法中可以用self::调用非静态方法?

当一个类中有非静态方法被self::调用时,系统会自动将这个方法转换为静态方法.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值