直接去看原文
原文链接:Java关于实例对象调用静态变量和静态方法问题_java对象可以调用static方法吗_骑个小蜗牛的博客-CSDN博客
---------------------------------------------------------------------------------------------------------------------------------
网上众说纷纭,本文主要总结分析一下。
答:实例变量和实例方法是属于对象的,对象当然可以正式调用

答:
下面是解释:
如果单从使用来说,Java是支持实例对象调用静态变量和静态方法的。
那就有人要说了,明明不可以呀,你看我使用IDEA通过实例对象调用静态变量和静态方法时,idea都不支持。
这里通过示例来说明:
测试类TestConst
- public class TestConst {
-
- public static Integer a = 1;
-
- public static void haha() {
- System.out.println("haha");
- }
- }
当你想通过实例对象调用静态变量和静态方法时,发现自动提示没有?
确实是的,但这就说明不支持实例对象调用静态变量和静态方法了吗,其实并不是的。
只是因为IDEA也不推荐你通过实例对象调用静态变量和静态方法,所以它的自动补全提示没有这个用法而已,但是你是可以手写调用的。
执行结果:
- 1
- haha
显然IDEA是支持实例对象调用静态变量和静态方法的,只是它不建议你这么用。
在阿里巴巴Java开发规范中就有这么一条:
【强制】避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接用类名来访问即可。
通过编译后的class文件可以发现
原来,实例对象调用静态变量和静态方法的写法,在编译后转换为了类直接调用静态变量或静态方法。
答:当然是可以的,静态变量和静态方法本来就是属于类的. 但是这个过程不会去产生此类的实例对象.
答:不可以,idea都不让你书写.直接给你报编译错误.
