关于类方法里不能调用实例方法/成员变量(即静态方法里不能调用非静态方法和成员变量)的论述
2019-02-26 12:53
363 查看
关于类方法里不能调用实例方法/成员变量的论述
参考《疯狂Java讲义》
作者看《疯狂Java讲义》时写下此文,许多文字都是书中原话
- 首先要明白无论调用成员变量还是方法,都需要主调(主语调用者),其格式为:主调.方法/成员变量
- 别看我们平时可以直接使用方法名/变量名,其实他们都有默认的前缀。如果是static修饰的,默认类名为前缀,没有static修饰的话,默认this为前缀。
- 记住一句话:谁调用这个方法,this就代表谁
- 接下来进入正题。标题的情况中,类方法属于类本身而不是类的对象,在类方法里面调用实例方法/变量,那么this就代表这个类本身,当然就找不到所想调用的实例方法或变量了,因为它们在类的对象里面。
- 如果你想在类方法里面调用实例方法/变量的话,有一种方法是先创建一个对象,将对象名作为主调:
public class StaticAccessNonStatic { public void info() { System.out.println("简单的info方法"); } public static void main(String[] args) { StaticAccessNonStatic vair=new StaticAccessNonStatic(); vair.info(); } }
错误的调用方式:
public class StaticAccessNonStatic { public void info() { System.out.println("简单的info方法"); } public static void main(String[] args) { info(); } }
相关文章推荐
- 关于静态变量,成员变量,静态方法,实例方法的用法及区别
- 实例成员变量不能在静态方法中访问
- 静态方法不能直接调用实例方法和变量,但可以间接调用(即在静态方法中创建类的实例,然后调用)
- 为什么不管是静态内部类的普通方法还是静态方法都不能访问外部类的实例变量
- 【转载】关于“静态方法不能调用非静态方法”的补充解释
- Java 中,为什么在静态方法中可以调用的方法、可以使用的成员变量必须是静态的?
- 为什么不能从静态的方法里调用非静态的方法或变量
- 今天发现c#中的实例后的对象是不能调用静态方法,以前学Java的时候是可以的.
- 为什么不能从静态的方法里面调用非静态方法,或变量?
- 重磅!关于为什么成员(内部)类不能拥有静态字段,方法的问题。
- 关于静态方法不能调用类中的非静态属性的理解
- 为什么不能从静态的方法里面调用非静态方法,或变量?
- 关于JAVA继承类的静态变量、成员变量、父子类构造方法调用顺序的探讨
- (转)为什么不能从静态的方法里面调用非静态方法,或变量and类加载机制
- C++静态函数中调用非静态成员函数或变量(方法1静态变量的方法)
- 静态成员函数不能调用普通成员变量
- 关于JAVA继承类的静态变量、成员变量、父子类构造方法调用顺序的研究
- 深入this关键字(静态方法中不能调用非静态成员的解释)
- 子类与父类实例变量,静态方法调用
- 为什么不能从静态的方法里面调用非静态方法,或变量?