static方法的理解
来源:互联网 发布:网络安全 知乎 编辑:程序博客网 时间:2024/05/17 23:25
1.实际开发中经常要用到的static
先看一段代码:
//写入文件public static function write($cont,$path='',$filename='log.log'){ $this->path = $path; $this->filename = $filename;$cont .="\r\n";$log = $this->isBak(); //计算文件的地址,判断大小$fh = fopen($log,'ab'); //打开,追加模式fwrite($fh,$cont);fclose($fh);}
这个方法是有问题的。提示的错误信息如下:
原因是为什么呢?解释如下:
a)先理解this是什么,然后理解静态方法与非静态方法的区别,然后大概能理解为什么不能调用了。
this是指当前对象,静态方法是通过类调用的方法,不需要实例化,既然不需要实例化,就没有当前对象,既然没有当前对象那怎么会有this呢?
b)静态方法不属于任何对象,是共有的,所有不能有代表某个对象的this
c)this引用当前对象,但是static方法并不依赖某个对象,通俗点就是类方法,并不需要创建对象就可以调用的。而this没有对象就根本不存在,static 方法中只能引用方法外的static变量和方法 ,this是指当前类的实例,而静态方法中不能调用非静态的东西,所以静态方法中不允许使用this
2.静态方法什么时候使用和有什么好处呢?
a)静态方法就是不用实例化,直接用类名调用,始终占固定的内存,否则就要实例化。
静态方法一般使用在公用的方法里面,比如数据库的dbHelp封装的方法,以便随时使用。
在单件模式中也使用静态方法。
b)从内存占用上来说,静态的虽不需要实例化,但一直占用内存,所以访问速度较快,所以静态类不能太大太占资源。
而非静态类只有被实例化后才占内存,需要“调入”内存后才能执行。相对较慢。
c)当类不会有多个对象而是更像是一个公用类的时候,或当方法或属性是“公用”信息的时候声明成静态的比较好。
而当类、方法或属性可能比较个性的时候则不声明成静态的。
比如从数据库获取数据的方法可以声明成静态的,而像画图中的圆,线,矩形则可以定义成非静态的。
d)1:方便使用;
2:不用实例化;
3:被预编译;
4:多了也不好,还没用就占了空间.
- static方法的理解
- 关于"多态"static方法的理解
- 关于Java中static方法的一点理解
- JAVA Static方法与单例模式的理解
- JAVA Static方法与单例模式的理解
- 面向对象中的构造方法以及关键字static的理解
- static的理解
- static的简单理解
- 浅谈static的理解
- static的理解
- static的理解
- static的一点理解
- Static的一些理解
- static关键字的理解
- static的理解
- static 的理解
- static的详细理解
- static的理解
- Spring中如何配置Hibernate事务
- Mac Ant安装方法
- UL.KUOPIGN甲骨文研究稀缺版臨時段
- LVS-DR
- PHP函数之CURL: 常见问题总结
- static方法的理解
- c++ primer p314页 练习9.28题解决方法,但不是很完善
- Box2DWeb_04之碰撞检测
- 欢迎使用CSDN-markdown编辑器
- Linux Keepalived 实现双机热备
- SDUST SingleTest C(15.4.4)
- mac下将文件上传到centos
- 【IOS开发】UITableView详解
- 使用新浪微博开发者平台的第一步---注册