来之博客园http://www.cnblogs.com/wlb/archive/2009/12/18/1627426.html
- static是从面向过程到面向对象的遗留产物,以往开发都是面向过程的,所以很多使用了静态类、静态方法,到了面向对象以后,这个关键字被保留下来了。因此面向对象开发中最好不用或少用static关键字。
- 无论是静态类还是非静态类,效果都是一样的,没什么区别。
- 如果你非要让我使用静态类,那么这样做的意义在哪里?
- 如果我把非静态类该为静态类,那么会不会有什么问题?
下面针对以上的一些观点,笔者阐述下自己的理解,如果哪里有写的不对的地方,还请指出。
- static关键字的确是面向过程开发的时代就有的关键字,但是并不代表是面向对象开发中就应该尽量避免static关键字。
- 静态类跟非静态类效果肯定是不一样的,区别肯定是有的。
- 根据笔者的经验,static类一般用于与状态无关的类
。那么,什么是与状态无关的类?我的理解是当一个类中没有属性,只有方法的的时候,就可以认为这个类是与状态无关的类
。回想非静态类实例化一个对象,目的在什么地方?目的就是通过这个实例化的对象来保存类的状态。
不是吗?例如
A a = new A();
a.Name = "Kevin";
a.Sex = "男";
......
通过我们实例化的对象a,类的状态被对象a保持住了。
如果我们的类没有属性,全是方法,那么,有必要为了调用类中的方法,先实例化一个对象出来吗?
因此,笔者建议,在做类的设计的时候,如果类是与状态无关的类,建议将其设计为static类。
至于说这样做的意义:首先,省略了构造一个对象的性能损耗,虽然可以忽略不计。其次,对程序员比较友好,调用类的方法更加的方便。
- 只要一个类是与状态类无关的类,那么将其设计成静态类是没有问题的。
待续...
分享到:
相关推荐
static的全部用法 要理解static,就必须要先理解另一个与之相对的关键字,很多人可能都还不知道有这个关键字,那就是auto,其实我们通常声明的不用static修饰的变量,都是auto的,因为它是默认的,就象short和long...
6. 使用static import:Java允许使用`import static`语句,这会将指定类的静态成员直接引入当前作用域,无需类名前缀。但这应谨慎使用,因为它可能会导致命名冲突,降低代码可读性。 在实际开发中,合理地导入和...
- **unsigned**:用于声明无符号整型变量或数组,可以与 `short`、`int` 和 `long` 结合使用。 - **long**:声明长整型变量或数组。 - **float**:声明单精度浮点型变量或数组。 - **double**:声明双精度浮点型变量...
3. **读取输入:** 使用`nextInt()`方法读取整数类型的输入。 4. **输出结果:** 使用`System.out.println()`输出字符串和变量的值。 #### 知识点二:数学函数的应用 在Java中,可以利用`Math`类中的各种数学函数...
以上是面向对象编程中有关方法的基本知识点整理,包括静态方法和实例方法的定义与调用、抽象方法、方法重载与复写等。通过理解这些基本概念,可以帮助开发者更好地掌握面向对象编程的核心思想。
### 微软SqlHelper类(中文版)方法及说明整理 #### 第一部分:私有构造函数和方法 在Microsoft SqlHelper类中,存在几个私有方法用于内部逻辑处理,这些方法通常不会被外部调用,但对理解SqlHelper类的工作原理至关...
5.Java不能为单独的方法,如main方法,定义局部常量,而只能为类定义常量,供该类的所有方法使用,所以,通常称之为类常量。如: class UsersConstants{ 2public static final double g = 32; public static final ...
- **非static方法与变量**:非static方法和变量不能直接在static方法中使用,除非通过具体的对象实例来访问。 #### 4. static代码块 - **作用**:用于执行一次性的初始化操作,比如数据库连接等。 - **执行时机**:...
Java 修饰符使用整理 Java 修饰符是 Java 语言中的一种基本语法元素,用于控制访问权限、继承关系、抽象类和静态成员变量等方面。Java 修饰符可以分为两大类:访问修饰符和非访问修饰符。访问修饰符包括 public、...
- `static` 关键字使得变量或方法成为了类级别的属性或方法。 - 这意味着它们可以直接通过类名来访问,而不需要创建类的实例。 - 在类加载时,`static` 块会先于任何实例化操作被执行。 2. **Static与实例的关系...
使用方法 返回值 10进制转2进制 Integer.toBinaryString(n) 一个二进制字符串 10进制转8进制 Integer.toOctalString(n) 一个八进制字符串 10进制转16进制 Integer.toHexString(n) 一个十六进制字符串 10...
本文将详细讲解如何使用C#来实现按照扩展名移动文件夹下的所有文件到新的文件夹下,以此来达到文件整理的目的。 首先,我们需要导入必要的命名空间,包括`System.IO`,它包含了处理文件和目录的所有类: ```csharp...
static修饰的全局变量只能在本文件内使用,static修饰的局部变量生命周期延长到程序结束,static修饰的函数只能在本文件中使用。在C++中,static关键字可以修饰成员变量和成员函数,static修饰的成员变量在本质上是...
根据给定的文件信息,以下是对Java日期类函数方法的详细整理与解释: ### Java日期类函数方法概览 在Java中,处理日期和时间主要依赖于`java.util.Date`、`java.text.SimpleDateFormat`、`java.sql.Date`、`java....
6. **使用Linter**:Linter工具如Clang Format或LLVM的Static Analyzer可以帮助检查代码中的潜在问题,如语法错误、未使用的变量等,进一步提升代码质量。 7. **编写单元测试**:良好的测试覆盖率可以确保代码的...
### 面向对象基础知识整理 #### 一、面向对象基础概念 面向对象编程(Object-Oriented Programming,简称OOP)是一种程序设计思想。它将客观世界中的实体抽象为对象,通过对象来组织和控制程序流程。面向对象的...
public static void main(String[] args) { System.out.println("Hello, World!"); } } ``` 4. **变量与数据类型**:Java有基本数据类型(如int、double、boolean等)和引用数据类型(类、接口和数组)。变量在...
C语言字节对齐__align()讲解[整理].pdf
1. C#应用程序可以使用除Word应用程序以外的工具和方法进行开发。 2. 命名空间可以签到。 3. C#程序在.NET Framework上运行,.NET Framework是一个Windows组件,包括一个称为公共语言运行库(CLR)和一组统一的类库...