1、如果被调用的方法它就是非静态的,在不改变方法为静态的情况下静态如何能调用这个非静态呢?
非静态的方法只属于类所实例化的对象。不属于类本身。
举个不恰当的例子吧:
类:就相当于一个冰箱的设计图纸。
对象:就相当于按照类的图纸设计出来的真正的冰箱。
我们可以对冰箱进行开门、关门的方法操作。
但我们不可以对冰箱的设计图纸进行开门、关门的方法操作。
这就是类和对象的区别。
所以呢,要调用冰箱开门、关门的方法,只能new出一个冰箱的实体,才能进行相关的方法操作。
2、说说原理,比如this什么的。
至于this,你可以理解成指向每一个对象(冰箱)的指针。
所以在静态方法中,也就不存在this的概念了。
3、成员不是静态的在不改变成员为静态的前提下该如何调用。
如果成员不是静态的,那只能归各个对象私有。调用的时候,要new出对象,来调用。
(从内存结构上来说,非静态成员,是存储在堆区中的)
如果成员是静态的,那该成员属于类本身,被类相关的各个对象共享。
(从内存结构上来说,静态成员,是存储在方法区中的) |