这两个实现有什么区别?

时间:2015-04-29 01:04:33

标签: java class object methods

我只是学习java并且遇到过两种方法来做同样的事情。我的问题是:它们之间有什么区别?谢谢。

选项A:

class Foo {
    public static int var;

    Foo (){
        var = 0;
    }

    public static void main(String[] args) {
        Foo object = new Foo();
        object.method();
        System.out.println(object.var); //prints 1
    }

    public void method (){
        var++;
    }
}

选项B:

class Foo {
    public static int var;

    Foo (){
        var = 0;
    }

    public static void main(String[] args) {
        Foo object = new Foo();
        method(object);
        System.out.println(object.var); //prints 1
    }

    public static void method (Foo object){
        object.var++;
    }
}

1 个答案:

答案 0 :(得分:0)

强化@eckes上面提到的内容 -

这些样本中比较常见的更常见 - 两者都模糊不清并促进不良行为 Understanding Class Members

  

注意:您还可以使用对象引用引用静态字段   喜欢

     

myBike.numberOfBicycles

     

气馁,因为它并不清楚它们是类变量。

在这种情况下,清除增加静态变量的方法:Foo.var++ 在现实生活中,拥有可变的静态变量通常是错误的。特别是如果你是初学者。