类成员方法如何调用类成员属性和方法
来源:互联网 发布:一致性hash算法原理 编辑:程序博客网 时间:2024/06/12 06:05
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::调用时,系统会自动将这个方法转换为静态方法.
- 类成员方法如何调用类成员属性和方法
- 类成员方法如何调用类成员属性和方法
- 类中的成员属性和成员方法
- mysqli类中的成员方法和成员属性
- PHP类中的成员属性和成员方法
- mysqli_result 类中的成员方法和属性
- mysqli_result 类中的成员方法和属性 .
- php类属性成员和方法重载
- mysqli_result 类中的成员方法和属性
- PHP 成员方法和类的调用
- 解析成员属性和成员方法
- mysqli类中的成员方法及成员属性
- c# 类成员的定义 定义方法、字段和属性
- c# 类成员的定义 定义方法、字段和属性
- php mysqli 类中成员方法和属性
- MFC中非类成员函数调用类成员函数方法
- python中的静态成员方法 和 类成员方法
- C#中调用父类的构造方法和成员
- iOS 开发须知
- 用户故事,史诗,主题
- RobotArt新版本速度设置技巧
- hibernate get/load区别
- acl 中的半驻留线程池服务器例子.
- 类成员方法如何调用类成员属性和方法
- HDU 2600 War 哈希
- qt designer 界面设计填坑之路 一
- ant利用正则表达式获取文件夹名
- google 选择坐标
- 38. Count and Say
- android中getWidth()和getMeasuredWidth()之间的区别
- apache安装https证书
- UEFI/Legacy的设置更改 以及硬盘模式的更改