在静态方法中,调用非静态方法时.。 java编程思想中说道: “如果传递一个对象的引用到静态方法里面.(静态方法可以创建其自身对象),然后通过这个引用(和this效果相同),你就可以调用非静态方法和访问非静态数据成员了。但是通常要达到这样的效果,你只需要写个非静态方法就即可。"
静态方法不能操作对象,是没有this参数的方法,因此静态方法不能访问该类实例的非静态变量、方法等
而在静态方法中实例化该类后,则可以通过实例去访问非静态变量、方法。
所以如果在该静态方法中调用该类的非静态变量、方法,不如直接写一个非静态方法,用this调用
静态方法只是本身它自己被调用的时候不需要创建的对象的实例
静态方法不允许访问该类实例的非静态变量、方法等,非嘚访问可以直接在静态方法中实例化该类,然后通过实例去访问。
那么问题来了,既然需要实例化该类,为什么不直接把该方法写成非静态方法,然后用实例调用。
静态方法与静态变量一样,属于类本身,而不属于那个类的一个对象
静态方法不允许访问该类实例的非静态变量、方法等,非嘚访问可以直接在静态方法中实例化该类,然后通过实例去访问。
那么问题来了,既然需要实例化该类,为什么不直接把该方法写成非静态方法,然后用实例调用。
静态方法不能操作对象,是没有this参数的方法,因此静态方法不能访问该类实例的非静态变量、方法等
而在静态方法中实例化该类后,则可以通过实例去访问非静态变量、方法。
所以如果在该静态方法中调用该类的非静态变量、方法,不如直接写一个非静态方法,用this调用
我们平时用类名直接调用静态方法,这个底层有没有创建对象呢?我在网上看到有人说,当在该类的外面,使用该类名直接调用静态方法,底层还是会创建对象?
他只是提供一种骚操作吧。。。别想太多,只是说明语法上的可行性。
类似的我记得还有不少,记不清了 像重载+自动转型的骚操作。。还有可扩展形参列表,真这么用怕是疯了吧
等于传递了实例做参数。静态方法就可以通过实例调用成员函数
调用静态可以通过类名或对象
但非静态只能通过对象调用
可以参考main方法调用的过程,main就是一个静态
在main里面调用非静态的需要把它变成一个对象再进行调用,这中间的行为就是
如果传递一个对象的引用到静态方法里面.(静态方法可以创建其自身对象)