static方法只跟类有关,而非static方法是于实例联系的.
把ok()改成改成非static之后就要先new一个实例才能访问.而static 方法只要类被加载就可以调用了.这也就是main为什么是static的原因之一
把ok()改成改成非static之后就要先new一个实例才能访问.而static 方法只要类被加载就可以调用了.这也就是main为什么是static的原因之一
解决方案 »
- String s 无法获取keyTyped的文本!(TextLayout layout = new TextLayout(s, f, context);)
- 大伙请来看看,这段代码正确不正确。很奇怪的输出。
- SNMP4j-agent怎么从一个文件读入数据写入另一个另一文件,即不写入内存?
- 如何在JSplitPane中...
- (.)(.) File类中有获得给定目录的上级目录名的方法吗?
- 怎么使用java.nio.*类来实现将网站的响应内容返回???马上给分!!
- 想写一个检查一个文件是不是抄袭另一个文件的程序 有大神知道吗?
- 定义一个ArrayList<ArrayList> all = new ArrayList<ArrayList>();
- 轻松解答,高分相送!
- eclipse中抽象类父子类重写的问题
- 怎麼把兩個數據庫連接綁定成一個連接,讓兩個不同的連接做的修改在一個事務中提交?
- 试用期的前几天会被安排做什么?(对于一个没有一点工作经验的大学生)
通常如果我们把现实中的事物映射到程序中时,我们能想到的方法都是实例方法,不存在静态方法。那到底什么是静态方法呢?
我们可以把静态方法看成支持方法或工具方法,它和对象无关,只是为了程序上的方便。与“吃饭”、“上厕所”不同,这些方法不属于“人”的任何一个个体,它们属于“人”这个抽象的东西(由于它与对象无关,所以静态方法存在的理由很少)。设想作为抽象概念的“人”的一个行为吧,它不属于任何一个人。是不是很难?这就对了,面向对象编程强调的对象,不要让类混淆了你的视线。不好意思,我也想不出作为概念的“人”的行为/方法的一个例子。但希望你已经能明白静态方法和实例方法的区别。现在你说的问题就好解释了:public static void ok(double x) 这个方法是一个静态方法(由于有static修饰符),它属于ParamTest类而不是它的任何一个对象。同样,main方法也不属于ParamTest类的任一个对象。所以在类这一概念层次上,main方法调用ok方法没问题。
现在你把ok方法的static修饰符去掉,它就变成一个实例方法了,它不属于ParamTest类,而属于ParamTest的对象。既然属于ParamTest的对象,所以就必须先有这么一个ParamTest对象才能执行ok方法。就像抽象的“人”是不会“吃饭”的,只有像“施瓦星格”、“江泽民”这样一个个具体的人才会“吃饭”。同理,在没有一个ParamTest对象时调用ok就没有意义了。噗...,讲了一大通不知说明白了没