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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 唐兴旺 中级黑马   /  2012-3-1 17:08  /  2233 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 唐兴旺 于 2012-3-1 21:04 编辑

都说静态方法不能访问非静态方法和变量,那么主方法为何就可以调用其他类的非静态方法呢?


现在明白了。。。。刚发现已经有人问过这问题了,而且和我写的句子还基本一摸一样,汗一个{:soso_e127:}

评分

参与人数 1技术分 +1 收起 理由
admin + 1 明白了把,加个辛苦分!

查看全部评分

5 个回复

倒序浏览
本帖最后由 陈建凡 于 2012-3-1 17:17 编辑

public static void main(String [] agrs)主方法也是一个静态方法。因为main就是这个类的主函数。这个还真的没有想过为什么
回复 使用道具 举报
class Test{
public void test(){
  System.out.println("abc");
}

public Test2
{
   public static void main(String[] MoZhe){
  Test a=new Test();
  a.test();
}

Static void aa()
{
System.out.println("abc");

}
}

主函数也是不能调用非静态的方法,但是实例化 就可以调用了。
回复 使用道具 举报
都说静态方法不能访问非静态方法和变量,应该是某个类的静态方法不能访问非静态方法和变量,而main()函数比较特殊,他是JVM自定义的程序执行的入口函数,他不属于任何类,他写在类里和类外面都是可以的。
回复 使用道具 举报
同意二楼的说法,在main方法中可以new一个类的实例变量,通引用变量调用类中的成员方法和成员函数。在main函数中是不可能直接调用其他非静态方法的,楼主可以试一下。另外,变量可以分为类变量和成员变量,同样的,方法可以分为类方法和成员方法。所谓类变量和类方法就是用static修饰的变量和方法,它不属于任何成员,属于类,所以可以通过“类名.变量名”和“类名.方法名”调用,而成员变量顾名思义,是属于一个成员的,所以要new一个类的实例变量,通过实例变量调用成员变量和成员函数。
回复 使用道具 举报
对,静态虽好但只能访问静态,主函数也没有例外。
虽然在定义主函数的时候我们调用了非静态的成员,但是你忽略了一点:
在你调用非静态的成员之前你是不是要先创建一个对象呀?
你如果不创建对象是不能访问静态的成员的!
既然你都创建了对象那么不论是静态还是非静态都能调用了!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马