2014-01-16 61 views
7

我想问一下在什么时候使用静态变量/方法或者在Java的其他情况下实例变量/方法是有利的问题?何时使用静态变量/方法以及何时使用Java中的实例变量/方法?

我知道,这取决于某些情况下(如编程UTIL类的静态方法),但我们可以声明像一般的策略是什么?

+3

[点击我](http://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html)。 – Maroun

+0

选中此项:[Static中的关键字](http://programmergate.com/static-keyword-java/) –

回答

12

在新手水平:每一个变量都有针对不同的对象不同的值:当

使用实例变量。例如:学生,辊数等的名称..

使用静态变量时:所述变量的值是独立的对象(不是唯一的每个对象)的。例如:没有学生。

3

static变量通常用于常量,这是常见的,如果在类的所有实例。例如,许多人不喜欢在代码中“硬编码”常量;他们喜欢用一个有意义的名称制作一个public staticprivate static变量,并在代码中使用它,这会使代码更具可读性。

在短

的任何方法或变量,它是独立的类的实例的状态的应该是静态

4

静态变量:当你需要的东西,将通过使用了应用程序,每个实例都需要知道的变量。

实例变量:这将是从对象到对象和对象的属性不同而静态变量是类的属性。

静态功能:用于执行一些实用工作。无需任何对象声明即可调用。

实例函数:对象需要调用此函数。

静态或实例取决于您的使用。

1

将静态变量看作是全局全局变量,或者如果使用“final”关键字,则将其视为全局全局常量。明智地使用静态非最终变量 - 它们在所有类实例中共享,并可能导致一些非显而易见的错误。我会建议避免使用可变静态变量 - 从小到无,如果这种需求无法使用依赖注入来实现。

另外使用全局变量总是让单元测试变得更困难 - 还有一个缺点需要考虑。

0

至于方法:每个方法Foo.method(BAR1 B1,BAR2,B2)通过定义总是可以有替换的等同的设计:

Bar.altmethod(美孚女,酒吧B2)

静态静态方法(富楼酒吧B1,酒吧B2)

而且你还可以换的是后一种方法在服务类本身就是一个单例(这样的intsance方法,该方法的静态性有点被cla隐藏起来了它在)。

唯一令人信服理由让你的方法作为类的方法参数之一(静态版)的实例方法,就是当你认为会有那个类的子类,并且它可能对这些子类有专门的方法实现有用。

想象

类GeographicalFigure {对象正交(){...}}

它可能留下打开后加入

类圈的可能性是有用的扩展GeographicalFigure {对象正交(){throw new ThisIsNoGoodException(); }}

除此之外,您的所有选项基本上相同。

相关问题