我的意思是我们知道静态成员应该只属于类,而不是从类创建的任何对象的一部分.但我们也可以通过对象访问静态方法吗?让我们说getInstaceCount()
是静态成员Class CharStack
.例如,我可以在这里创建对象并访问CharStack的静态成员:
CharStack stack1 = new Charstack(10);// declaring object int count1 = stack1.getinstanceCount();//accessing Static member with the object
所以上面我也可以使用对象stack1访问Charstack的静态成员,所以我怀疑静态成员的确切用法是什么,如果它的对象甚至可以访问?同样为什么类的实例变量不能被类访问?
一个static
方法没有任何意义对于一类的特定实例的.
static
允许在实例上调用方法的事实不应该欺骗你:它只是Java语言的设计错误,没有任何意义.
一个static
方法没有一个this
参考,因此它是没有意义的能够调用它在一个特定的实例.
另外一个static
方法不是多态的,所以在任何情况下你都不能通过在一个实例上调用它来利用这个事实
简短的故事:static
方法在某些情况下是有意义的,但你应该总是通过类调用它们,例如CharStakc.getInstanceCount()
澄清它们的预期行为,因为允许通过实例调用它们只是一个不应该被允许的错误选择.