A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Makise_Kurisu 中级黑马   /  2015-12-3 00:05  /  1185 人查看  /  17 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么不加static的时候无法调用呢?
错误: 无法从静态上下文中引用非静态 方法 function()
一定要加 static吗?

17 个回复

倒序浏览
你在main方法里面调用其他方法得吧?这样的话是main方法是static修饰的,因此其他方法也得静态static修饰,这是java规定的.
回复 使用道具 举报
一句话,静态只能调用静态
回复 使用道具 举报
  1. class A
  2. {
  3.        void function()
  4.         {
  5.                 System.out.println("A")
  6.        }
  7. }
  8. class B
  9. {
  10.    pubilc static void main(String [] args)
  11.    //主函数为静态。
  12.    {
  13.          A.function();//编译失败
  14.          new A().function();//编译成功
  15.    }
  16. }
复制代码

故静态不能直接调用非静态,需要创建对象
回复 使用道具 举报
静态方法是类加载时就分配空间了,不需要创建对象就可以直接调用;而非静态方法在类加载时还不存在,是需要创建对象才能调用的。所以呢,为什么说静态方法不能调用非静态方法?一个存在的怎么调用一个不存在的呢
回复 使用道具 举报
同楼上  静态只能调用静态
回复 使用道具 举报
两种方法,
1.加static,成为静态方法,就能够调用静态方法了
2.如果想不加static,那么就要实例化一个对象。即给function方法创建一个对象
而且方法名首字母一般是大写的吧。。。
回复 使用道具 举报
sun4w 中级黑马 2015-12-3 23:34:34
8#
需要实例化一个类,才可以调用方法。

除非调用的是一个静态方法(在类加载的时候这个类就存在了,通过类调用)
回复 使用道具 举报
本帖最后由 xiao15779706 于 2015-12-4 09:10 编辑

静态只能调用静态
非静态既可以访问静态也可以访问非静态
回复 使用道具 举报
如果你把方法定义在主函数的类当中,需要把方法也变成静态方法,如果不想让方法变成静态,需要单独写一个类,然后主函数创建类对象,再调用类方法
回复 使用道具 举报
是的,静态语句优先于对象存在,静态只能调用静态
回复 使用道具 举报
静态语句优先于对象存在,静态只能调用静态,不能直接调用非静态,需要创建对象
回复 使用道具 举报
学习了……{:2_31:}
回复 使用道具 举报
加 static 里是本类里用, 如果不加就成方法了
回复 使用道具 举报
静态的东西只能引用静态的东西
回复 使用道具 举报
静态只能访问静态,非静态既能访问静态,也能访问非静态
回复 使用道具 举报
A:static的注意事项         * a:在静态方法中是没有this关键字的                 * 如何理解呢?                         * 静态是随着类的加载而加载,this是随着对象的创建而存在。                         * 静态比对象先存在。         * b:静态方法只能访问静态的成员变量和静态的成员方法                 * 静态方法:                         * 成员变量:只能访问静态变量                         * 成员方法:只能访问静态成员方法                 * 非静态方法:                         * 成员变量:可以是静态的,也可以是非静态的                         * 成员方法:可是是静态的成员方法,也可以是非静态的成员方法。                 * 简单记:                         * 静态只能访问静态。 * B:案例演示
回复 使用道具 举报
魏志林 来自手机 中级黑马 2015-12-7 08:01:36
18#
我也遇到过,确实是这样
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马