为什么我们不能仅仅将所有方法和变量都设为静态,以免陷入制造对象的麻烦?
自从我很久以前开始学习Java以来,我就一直遇到这个问题,但是从未提出过。我知道,如果方法或变量不是静态的,则可以使用创建的对象来调用它:
public class classwithmethodandvariable { int i = 7; public void hello() { } }
您可以这样称呼:
public class myMainClass { classwithmethodandvariable obj = new classwithmethodandvariable(); classwithmethodandvariable.i++; // ACCESS INT I AND INCREMENT classwithmethodandvariable.hello(); // CALLS METHOD HELLO }
但是,如果我们有了方法hello()
和变量,i
就可以用更少的代码行完成所有工作,对吗?
public class classwithmethodandvariable { static int i = 7; public static void hello() { } }
您可以这样称呼:
public class myMainClass { classwithmethodandvariable.i++; // ACCESS INT I AND INCREMENT classwithmethodandvariable.hello(); // CALLS METHOD HELLO }
我们为什么不这样做呢?我看到了另一个类似的问题,但答案是“因为您无法从静态方法访问实例变量”。但是,如果您还使变量也该static
怎么办?
面向对象的程序设计为将状态隐藏在对象中,然后提供一种修改状态的方法(即行为)。
这是一个非常简单的想法,但是当与继承,接口和其他常见设计模式结合使用时,就可以实现一个非常易于维护的系统。
仅使用静态方法会阻止许多设计模式正常工作,因此您将牺牲系统的可维护性和可扩展性。