JAVA中 在static方法内部能否调用非静态方法?

如题所述

1.顶级类1) 可以定义任何静态和非静态的成员;2) 顶级类不能是静态(static)的,若要加上其它关键字只能是public,final,abstract3) 抽象类(abstract)和接口(interface)不能是final的.4) 顶级类的静态方法中:可以直接访问该类的静态成员;访问非静态成员通过“new 顶级类().成员“的方法访问。访问静态内部类的成员通过“new 静态内部类().成员”的方法访问; 访问非静态内部类的成员通过“new 顶级类().new 非静态内部类().成员”方法访问.5) 顶级类的非静态方法中:可以直接访问顶级类中的所有静态和非静态成员;访问静态内部类的成员和非静态内部类的成员方法一样,通过“new 静态内部类().成员”、“new 非静态内部类().成员”访问2.非静态内部类1) 非静态内部类中不允许定义静态的成员;2) 非静态内部类非静态方法,访问静态内部类成员的方法:
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-12-12
可以通过对象调用非静态方法.
不通过对象不可以.
第2个回答  2013-12-12
可以,这个其实很好理解,你的main方法不是静态的吗,你在里面不也可以调用
其他非静态的方法吗?反过来是不行的。

JAVA中 在static方法内部能否调用非静态方法?
static方法内部不能直接调用非静态方法,可以在调用之前实例化非静态方法所在的类,再用类点方法来调用。例:非静态方法是className类里面的method();className cn=new className();cn.method();这样就可以了。希望能帮助你。

Java中的静态方法为什么不能调用非静态方法
没报错对不对?这不能说明在C语言中,静态方法能够调用非静态方法。在C语言中,static不是用来定义非静态方法的,是用来限制方法的作用域的。就是说,方法前面加了static修饰,这个方法只能在当前文件中调用。因为C语言是面向过程的语言。这里的方法称为函数更合适。如果是C++呢?看代码。结果及背后的原...

如何在静态方法中调用非静态方法
public static void main(String[] args) { StaticMethodTest sObj=new StaticMethodTest();StaticMethod(sObj); \/\/在主函数中可以直接调用静态方法 } }

java为什么不能在静态方法中使用非静态变量
静态方法是不用创建对象就直接调用,所以在静态方法中没有this指针,不能访问所属类的非静态变量和方法,只能访问方法体内的局部变量、自己的参数和静态变量,而非静态变量是给一个类的实例化对象调用的,一个是类调用,一个是类对象调用,所有在静态方法中是不能使用非静态变量的。实例:上面出错的原因...

不能在static方法中调用非static方法
如果你只是在这里写着玩,就只能把stgatic写成静态的。如果在项目中,这种情况是基本不会有的,要尽量少的用静态方法。他们一直占用着内存的。

用static修饰的方法能不能调用非static方法,能不能访问非static变量...
不能,因为静态方法在类装载的时候就分配了内存块,而非静态的方法和变量在new这个类的对象的时候才分配内存块, 他们内存分配的时间不一样 静态区域访问非静态区域是没有任何意义的 本回答由提问者推荐 举报| 答案纠错 | 评论 33 1 497455993 采纳率:27% 来自团队:Java老馆 擅长: JAVA相关 数据库DB 手机使用...

java ,为什么无法从静态上下文中引用非静态方法
因为编译器不知道那个方法在哪,两种解决办法,一种加static修饰,这样在程序运行时就会被加载入内存,另一种创建对象,然后调用对象的方法,如 public static void main(String args[]){ TextLinerSearch t = new TextLinerSearch ();t.linearSearch(list,-3);} ...

JAVA无法从静态上下文中引用非静态 变量 this
内部类是动态的,也就是开头以public class开头。而主程序是public static class main。在Java中,类中的静态方法不能直接调用动态方法。只有将某个内部类修饰为静态类,然后才能够在静态类中调用该类的成员变量与成员方法。所以在不做其他变动的情况下,最简单的解决办法是将public class改为public ...

【新面试题】Java中的静态方法为什么不能调用非静态方法
首先,你可能会说静态方法是属于类的,而非静态方法属于实例对象。这没错,但答案其实只差一句话。JVM是如何调用Java方法的呢?构建运行环境,调用Java方法。构建运行环境会多做一步给this指针赋值,这是关键。非静态方法会,静态方法不会。如果你能理解这段话,并从我手写的JVM中找到对应的代码,你就...

java中无法从静态上下文中引用非静态 变量 i while(i>0)
静态方法只能调用外部静态变量和静态方法,因为你的main()方法是静态方法,而你想去引用外面定义的非静态变量(i和j)当然就不行了,所以可以将i和j改成静态的或着将i和j的定义方到main方法里面去。1、static int i,j;2、main(){ int i,j;} 总结:静态方法只能引用外部的静态方法和静态变量,...

相似回答