`
圣诞王子
  • 浏览: 84571 次
  • 性别: 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...

    在Eclipse中导入static元素Java开发Java

    6. 使用static import:Java允许使用`import static`语句,这会将指定类的静态成员直接引入当前作用域,无需类名前缀。但这应谨慎使用,因为它可能会导致命名冲突,降低代码可读性。 在实际开发中,合理地导入和...

    C 语言关键字用法 整理好了

    - **unsigned**:用于声明无符号整型变量或数组,可以与 `short`、`int` 和 `long` 结合使用。 - **long**:声明长整型变量或数组。 - **float**:声明单精度浮点型变量或数组。 - **double**:声明双精度浮点型变量...

    java整理的代码

    3. **读取输入:** 使用`nextInt()`方法读取整数类型的输入。 4. **输出结果:** 使用`System.out.println()`输出字符串和变量的值。 #### 知识点二:数学函数的应用 在Java中,可以利用`Math`类中的各种数学函数...

    面向对象相关知识点整理

    以上是面向对象编程中有关方法的基本知识点整理,包括静态方法和实例方法的定义与调用、抽象方法、方法重载与复写等。通过理解这些基本概念,可以帮助开发者更好地掌握面向对象编程的核心思想。

    微软SqlHelper类 中文版 中的方法及说明整理

    ### 微软SqlHelper类(中文版)方法及说明整理 #### 第一部分:私有构造函数和方法 在Microsoft SqlHelper类中,存在几个私有方法用于内部逻辑处理,这些方法通常不会被外部调用,但对理解SqlHelper类的工作原理至关...

    java核心知识点整理

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

    学习Java时自己整理的知识点_2

    - **非static方法与变量**:非static方法和变量不能直接在static方法中使用,除非通过具体的对象实例来访问。 #### 4. static代码块 - **作用**:用于执行一次性的初始化操作,比如数据库连接等。 - **执行时机**:...

    Java修饰符使用整理(含实例)

    Java 修饰符使用整理 Java 修饰符是 Java 语言中的一种基本语法元素,用于控制访问权限、继承关系、抽象类和静态成员变量等方面。Java 修饰符可以分为两大类:访问修饰符和非访问修饰符。访问修饰符包括 public、...

    学习Java时自己整理的知识点5

    - `static` 关键字使得变量或方法成为了类级别的属性或方法。 - 这意味着它们可以直接通过类名来访问,而不需要创建类的实例。 - 在类加载时,`static` 块会先于任何实例化操作被执行。 2. **Static与实例的关系...

    Java进制转换方法整理

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

    c#整理文件

    本文将详细讲解如何使用C#来实现按照扩展名移动文件夹下的所有文件到新的文件夹下,以此来达到文件整理的目的。 首先,我们需要导入必要的命名空间,包括`System.IO`,它包含了处理文件和目录的所有类: ```csharp...

    嵌入式软件开发面试题整理

    static修饰的全局变量只能在本文件内使用,static修饰的局部变量生命周期延长到程序结束,static修饰的函数只能在本文件中使用。在C++中,static关键字可以修饰成员变量和成员函数,static修饰的成员变量在本质上是...

    java日期类函数方法整理

    根据给定的文件信息,以下是对Java日期类函数方法的详细整理与解释: ### Java日期类函数方法概览 在Java中,处理日期和时间主要依赖于`java.util.Date`、`java.text.SimpleDateFormat`、`java.sql.Date`、`java....

    Xcode代码整理

    6. **使用Linter**:Linter工具如Clang Format或LLVM的Static Analyzer可以帮助检查代码中的潜在问题,如语法错误、未使用的变量等,进一步提升代码质量。 7. **编写单元测试**:良好的测试覆盖率可以确保代码的...

    面向对象基础知识整理

    ### 面向对象基础知识整理 #### 一、面向对象基础概念 面向对象编程(Object-Oriented Programming,简称OOP)是一种程序设计思想。它将客观世界中的实体抽象为对象,通过对象来组织和控制程序流程。面向对象的...

    张孝祥正在整理Java.doc张孝祥正在整理Java.doc

    public static void main(String[] args) { System.out.println("Hello, World!"); } } ``` 4. **变量与数据类型**:Java有基本数据类型(如int、double、boolean等)和引用数据类型(类、接口和数组)。变量在...

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

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

    C#知识整理(完整)

    1. C#应用程序可以使用除Word应用程序以外的工具和方法进行开发。 2. 命名空间可以签到。 3. C#程序在.NET Framework上运行,.NET Framework是一个Windows组件,包括一个称为公共语言运行库(CLR)和一组统一的类库...

Global site tag (gtag.js) - Google Analytics