黑马程序员技术交流社区

标题: 关于mian主函数 [打印本页]

作者: 唐兴旺    时间: 2012-3-1 17:08
标题: 关于mian主函数
本帖最后由 唐兴旺 于 2012-3-1 21:04 编辑

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


现在明白了。。。。刚发现已经有人问过这问题了,而且和我写的句子还基本一摸一样,汗一个{:soso_e127:}
作者: 陈建凡    时间: 2012-3-1 17:13
本帖最后由 陈建凡 于 2012-3-1 17:17 编辑

public static void main(String [] agrs)主方法也是一个静态方法。因为main就是这个类的主函数。这个还真的没有想过为什么
作者: 陈建凡    时间: 2012-3-1 17:23
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");

}
}

主函数也是不能调用非静态的方法,但是实例化 就可以调用了。
作者: 泮和顺    时间: 2012-3-1 17:46
都说静态方法不能访问非静态方法和变量,应该是某个类的静态方法不能访问非静态方法和变量,而main()函数比较特殊,他是JVM自定义的程序执行的入口函数,他不属于任何类,他写在类里和类外面都是可以的。
作者: 罗亚东    时间: 2012-3-1 18:18
同意二楼的说法,在main方法中可以new一个类的实例变量,通引用变量调用类中的成员方法和成员函数。在main函数中是不可能直接调用其他非静态方法的,楼主可以试一下。另外,变量可以分为类变量和成员变量,同样的,方法可以分为类方法和成员方法。所谓类变量和类方法就是用static修饰的变量和方法,它不属于任何成员,属于类,所以可以通过“类名.变量名”和“类名.方法名”调用,而成员变量顾名思义,是属于一个成员的,所以要new一个类的实例变量,通过实例变量调用成员变量和成员函数。
作者: 王杰    时间: 2012-3-1 21:13
对,静态虽好但只能访问静态,主函数也没有例外。
虽然在定义主函数的时候我们调用了非静态的成员,但是你忽略了一点:
在你调用非静态的成员之前你是不是要先创建一个对象呀?
你如果不创建对象是不能访问静态的成员的!
既然你都创建了对象那么不论是静态还是非静态都能调用了!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2