我想问一下在什么时候使用静态变量/方法或者在Java的其他情况下实例变量/方法是有利的问题?何时使用静态变量/方法以及何时使用Java中的实例变量/方法?
我知道,这取决于某些情况下(如编程UTIL类的静态方法),但我们可以声明像一般的策略是什么?
我想问一下在什么时候使用静态变量/方法或者在Java的其他情况下实例变量/方法是有利的问题?何时使用静态变量/方法以及何时使用Java中的实例变量/方法?
我知道,这取决于某些情况下(如编程UTIL类的静态方法),但我们可以声明像一般的策略是什么?
在新手水平:每一个变量都有针对不同的对象不同的值:当
使用实例变量。例如:学生,辊数等的名称..
使用静态变量时:所述变量的值是独立的对象(不是唯一的每个对象)的。例如:没有学生。
static
变量通常用于常量,这是常见的,如果在类的所有实例。例如,许多人不喜欢在代码中“硬编码”常量;他们喜欢用一个有意义的名称制作一个public static
或private static
变量,并在代码中使用它,这会使代码更具可读性。
在短
的任何方法或变量,它是独立的类的实例的状态的应该是静态。
静态变量:当你需要的东西,将通过使用了应用程序,每个实例都需要知道的变量。
实例变量:这将是从对象到对象和对象的属性不同而静态变量是类的属性。
静态功能:用于执行一些实用工作。无需任何对象声明即可调用。
实例函数:对象需要调用此函数。
静态或实例取决于您的使用。
将静态变量看作是全局全局变量,或者如果使用“final”关键字,则将其视为全局全局常量。明智地使用静态非最终变量 - 它们在所有类实例中共享,并可能导致一些非显而易见的错误。我会建议避免使用可变静态变量 - 从小到无,如果这种需求无法使用依赖注入来实现。
另外使用全局变量总是让单元测试变得更困难 - 还有一个缺点需要考虑。
至于方法:每个方法Foo.method(BAR1 B1,BAR2,B2)通过定义总是可以有替换的等同的设计:
Bar.altmethod(美孚女,酒吧B2)
和
静态静态方法(富楼酒吧B1,酒吧B2)
而且你还可以换的是后一种方法在服务类本身就是一个单例(这样的intsance方法,该方法的静态性有点被cla隐藏起来了它在)。
唯一令人信服理由让你的方法作为类的方法参数之一(静态版)的实例方法,就是当你认为会有那个类的子类,并且它可能对这些子类有专门的方法实现有用。
想象
类GeographicalFigure {对象正交(){...}}
它可能留下打开后加入
类圈的可能性是有用的扩展GeographicalFigure {对象正交(){throw new ThisIsNoGoodException(); }}
除此之外,您的所有选项基本上相同。
[点击我](http://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html)。 – Maroun
选中此项:[Static中的关键字](http://programmergate.com/static-keyword-java/) –