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