`
圣诞王子
  • 浏览: 82957 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

【整理】static的用法

 
阅读更多

来之博客园http://www.cnblogs.com/wlb/archive/2009/12/18/1627426.html

  1. static是从面向过程到面向对象的遗留产物,以往开发都是面向过程的,所以很多使用了静态类、静态方法,到了面向对象以后,这个关键字被保留下来了。因此面向对象开发中最好不用或少用static关键字。
  2. 无论是静态类还是非静态类,效果都是一样的,没什么区别。
  3. 如果你非要让我使用静态类,那么这样做的意义在哪里?
  4. 如果我把非静态类该为静态类,那么会不会有什么问题?

     下面针对以上的一些观点,笔者阐述下自己的理解,如果哪里有写的不对的地方,还请指出。

  1. static关键字的确是面向过程开发的时代就有的关键字,但是并不代表是面向对象开发中就应该尽量避免static关键字。
  2. 静态类跟非静态类效果肯定是不一样的,区别肯定是有的。
  3. 根据笔者的经验,static类一般用于与状态无关的类 。那么,什么是与状态无关的类?我的理解是当一个类中没有属性,只有方法的的时候,就可以认为这个类是与状态无关的类 。回想非静态类实例化一个对象,目的在什么地方?目的就是通过这个实例化的对象来保存类的状态。
    不是吗?例如
    A a = new A();
    a.Name = "Kevin";
    a.Sex = "男";
    ......
    通过我们实例化的对象a,类的状态被对象a保持住了。
    如果我们的类没有属性,全是方法,那么,有必要为了调用类中的方法,先实例化一个对象出来吗?
    因此,笔者建议,在做类的设计的时候,如果类是与状态无关的类,建议将其设计为static类。
    至于说这样做的意义:首先,省略了构造一个对象的性能损耗,虽然可以忽略不计。其次,对程序员比较友好,调用类的方法更加的方便。
  4. 只要一个类是与状态类无关的类,那么将其设计成静态类是没有问题的。

待续...

分享到:
评论

相关推荐

    c# static的全部用法收集整理

    static的全部用法 要理解static,就必须要先理解另一个与之相对的关键字,很多人可能都还不知道有这个关键字,那就是auto,其实我们通常声明的不用static修饰的变量,都是auto的,因为它是默认的,就象short和long...

    java核心知识点整理

    5.Java不能为单独的方法,如main方法,定义局部常量,而只能为类定义常量,供该类的所有方法使用,所以,通常称之为类常量。如: class UsersConstants{ 2public static final double g = 32; public static final ...

    Java进制转换方法整理

    使用方法 返回值 10进制转2进制 Integer.toBinaryString(n) 一个二进制字符串 10进制转8进制 Integer.toOctalString(n) 一个八进制字符串 10进制转16进制 Integer.toHexString(n) 一个十六进制字符串 10...

    C语言字节对齐__align()讲解[整理].pdf

    C语言字节对齐__align()讲解[整理].pdf

    IOS 关键字const 、static、extern详解

    随着编程经验的积累大部分还是知道是什么意思的,但在概念上和具体的用法上却依然有些模糊,故特意整理汇总了下三个比较常见的关键字——const/static/extern。 二、关键字const/static/extern的释义和用法 1、...

    c语言精华整理部分

    c语言精华部分,讲解了static const等用法,c语言内存分配等 ;

    JAVA_Thinking in Java(中文版 由yyc,spirit整理).chm

    JAVA_Thinking in Java(中文版 由yyc,spirit整理).chm ------------------------------------------------- 本教程由yyc,spirit整理 ------------------------------------------------- “Thinking in Java...

    详谈PHP中public,private,protected,abstract等关键字的用法

    在PHP中包含了很多对函数和类进行限制的关键字,常用的通常有abstract,final,interface,public,protected,private,static等等,下面我们就将对这些进行分析整理各个的用法。 变量与方法的关键字public,private,...

    JAVA核心知识点整理.rar

    5.Java不能为单独的方法,如main方法,定义局部常量,而只能为类定义常量,供该类的所有方法使用,所以,通常称之为类常量。如: class UsersConstants{ 2public static final double g = 32; public static final ...

    MD5Code加密技术

    * md5Memcpy是一个内部使用的byte数组的块拷贝函数,从input的inpos开始把len长度的 * 字节拷贝到output的outpos位置开始 */ private void md5Memcpy(byte[] output, byte[] input, int outpos, int inpos, int...

    C语言难点分析整理

    2. C语言难点分析整理 10 3. C语言难点 18 4. C/C++实现冒泡排序算法 32 5. C++中指针和引用的区别 35 6. const char*, char const*, char*const的区别 36 7. C中可变参数函数实现 38 8. C程序内存中组成部分 41 9. ...

    Java常见面试问题整理.docx

    2.方法区(元空间):方法区用于存储已被虚拟机加载的类信息、常量、静态变量,如static修饰的变量加载类的时候就被加载到方法区中。运行时常量池是方法区的一部分,class文件除了有类的字段、接口、方法等描述信息...

    免费下载:C语言难点分析整理.doc

    2. C语言难点分析整理 10 3. C语言难点 18 4. C/C++实现冒泡排序算法 32 5. C++中指针和引用的区别 35 6. const char*, char const*, char*const的区别 36 7. C中可变参数函数实现 38 8. C程序内存中组成部分 41 9. ...

    java学习笔记-java思维导图流程图表格整理

    Java学习笔记 1 命令行运行 1 Java基础 1 注释 1 单行注释 1 多行注释 1 文档注释 1 标识符和关键字 2 数据类型 4 类型转换 7 ...使用命令行生成 12 使用idea生成 12 ...Java方法 22 方法重载 22 ...static详解

    C语言难点分析整理.doc

    2. C语言难点分析整理 10 3. C语言难点 18 4. C/C++实现冒泡排序算法 32 5. C++中指针和引用的区别 35 6. const char*, char const*, char*const的区别 36 7. C中可变参数函数实现 38 8. C程序内存中组成部分 ...

    c语言难点分析整理,C语言

    2. C语言难点分析整理 10 3. C语言难点 18 4. C/C++实现冒泡排序算法 32 5. C++中指针和引用的区别 35 6. const char*, char const*, char*const的区别 36 7. C中可变参数函数实现 38 8. C程序内存中组成部分 41 9. ...

    关于C/C++小知识积累

    本文对const用法、一些比较容易混淆的定义进行了整理。还对关键字static的作用、常用的位操作进行简单说明。

    Thinking in Java(中文版 由yyc,spirit整理).chm

    本教程由yyc,spirit整理 ------------------------------------------------- “Thinking in Java”详细目录   写在前面的话 引言 1. 前提 2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD...

Global site tag (gtag.js) - Google Analytics