黑马程序员技术交流社区
标题:
静态方法可以调用非静态方法吗?
[打印本页]
作者:
gm1314
时间:
2014-8-7 07:09
标题:
静态方法可以调用非静态方法吗?
是不得通过对象调用
作者:
张涛的狂怒
时间:
2014-8-7 07:35
肯定不可以,静态方法只能调用静态方法,
静态方法与非静态方法:
1、静态方法属于类所有,随类的加载加载。实例方法随对象的创建而加载。
只有通过实例对象才能调用方法。静态方法没有实例,也就不能
2、非静态方法可以访问类中的任何成员,静态方法只能访问类中的静态成员。
3、因为静态方法在类实例化前就可以使用,而类中的非静态变量必须在实例化之后才能分配内存,
4. 静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁。
5. 静态方法和静态变量创建后始终使用同一块内存,而使用实例的方式会创建多个内存.
作者:
阿磊
时间:
2014-8-7 08:50
学习学习
作者:
kakasa
时间:
2014-8-7 14:46
嗯 应该只能创建新对象了
作者:
liubea
时间:
2014-8-7 15:00
静态方法只能访问静态的方法,非静态的方法既能访问静态方法又能访问非静态方法。简言之,非静态的能访问非静态的和静态的,静态的只能访问静态的。
作者:
MeloX
时间:
2014-8-7 15:05
2楼讲的很详细
作者:
cyc523633157
时间:
2014-8-7 15:09
不可以,非静态可以调用静态的,静态可以调用静态,非静态的必须通过new关键字吧,
作者:
liqi
时间:
2014-8-7 15:10
可以这样理解,静态方法是死的, 随着类的加载而加载,加载后就不变
非静态是活的,和类的对象改变而改变。但是用对象调用,这个方法就和这个对象匹配了,相对于这个对象而言是死的,是固定的。
所以不确定的不能调用 静态不能调用非静态的
对象调用非静态,因为非静态方法对于对象而言是固定的,在对象实例化时以和对象匹配
作者:
思维
时间:
2014-8-7 19:31
静态方法调用非静态方法好像必须要通过创建对象去调用!
作者:
zhuohong_xiao
时间:
2014-8-7 19:36
不可以。静态方法只能调用静态。
作者:
洛漠O_o
时间:
2014-8-7 19:56
=====================通过new对象可以===========
public static void staticMethod(){//静态方法
System.out.println("进入静态方法");
new Test().commonMethod();//调用普通方法
}
public void commonMethod(){//普通方法
System.out.println("我是普通方法");
}
public static void main(String[] args) {
staticMethod();//调用静态方法
}
复制代码
/*结果:
进入静态方法
我是普通方法
*/
作者:
继续悲伤
时间:
2014-8-7 20:38
2楼讲的很精彩,总结的也很详细!
作者:
Justfeeling
时间:
2014-8-7 22:36
通过创建对象,就可以调用了
作者:
liujingnan
时间:
2014-8-7 23:12
如果这个对象中有非静态方法的话那是可以调用的,因为非静态方法就是用new出来的对象调用的
作者:
rolling-stone
时间:
2014-8-8 08:40
根本就不可以,你就不要想了.你可以自己试一下,你看看报不报错就知道了。
作者:
一顿一只牛
时间:
2014-8-8 09:06
静态不能调用非静态。 我一直这么记的。
作者:
席杰
时间:
2014-8-8 09:11
在一个类中的静态方法不能直接调用非静态方法,需创建对象去调用非静态方法,而非静态方法可以直接调用静态方法与非静态方法。
作者:
韩天雷
时间:
2014-8-8 09:21
不可以 老毕讲过
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2