Coding简书面面观

static 静态域和静态方法

2019-02-15  本文已影响53人  AaronYu__

1. 静态域

如果将域定义为 static,每个类中只有一个这样的域。而每一个对象对于所有的实例域都有自己的一份拷贝。直接看代码吧。

class Employee {
    private static int NextId = 1;
    private int id;
}

这里给 Employee 类添加了一个实例域 id 和一个静态域 NextId。现在每一个雇员对象都有一个自己的 id 域,但这个类的所有实例域都将共享一个 NextId 域。即使我们没有任何雇员对象,这个静态域 NextId 也是存在的。它属于类,而不属于任何一个独立的对象。

我们制造一个新的 Employee 对象 aaron,并且调用一个方法。

public void setId() {
        id = NextId;
        NextId ++;
        System.out.println("NextId: "+NextId  +" Id: " + id);
    }
Employee aaron = new Employee();
aaron.setId();

其实我们做的操作相当于:

aaron.id = Employee.NextId;
Employee.NextId ++;

2. 静态方法

静态方法是一种不能对对象实施操作的方法。

public class ArrayIndex {
    public static void f() {
        System.out.println("hello AaronYu");
    }
    public  void g() {
        System.out.println("hello aaron");
    }
        
    public static void main(String[] args) {
    
        f();
        ArrayIndex.f();
        ArrayIndex array = new ArrayIndex();
        array.g();
//      ArrayIndex.g();
        
        array.f();
    }

}

上面的代码中我构造了一个静态方法和一个实例方法作为对照。
静态方法我们可以直接调用,或者通过类名调用。如 f();
ArrayIndex.f(); 或者通过对象调用,如 array.f(); 不过不建议通过这种方法调用,我建议通过类名调用。

对于实例方法,我们要构造一个对象如 array 来调用实例方法,如 array.g(); 会打印输出: hello aaron

System.out.println("点个喜欢!欢迎关注我!");

上一篇 下一篇

猜你喜欢

热点阅读