黑马程序员技术交流社区

标题: 关于static访问的问题 [打印本页]

作者: 落叶归根    时间: 2013-9-11 11:06
标题: 关于static访问的问题
本帖最后由 落叶归根 于 2013-9-11 16:58 编辑

         class   Man
{
static  void home ()
{
System.out.println("HOLLOw");
}

public   static  void  main (String[] args)
{
Man.home();
}
}
问题是可以直接调用Man类中的Home方法吗?


作者: CHJ    时间: 2013-9-11 11:10
本帖最后由 CHJ 于 2013-9-11 11:11 编辑

你试一下啊!!  你这主函数,在类里面么?
作者: 武嘉豪    时间: 2013-9-11 11:15
  1. class   ManDemo
  2. {
  3.         static  void Home ()
  4.         {
  5.                 System.out.println("HOLLOw");
  6.         }
  7. }
  8. class Man
  9. {
  10.         public   static  void  main (String[] args)
  11.         {
  12.                 ManDemo.Home();
  13.         }
  14. }
复制代码
静态方法最大的特点就是,不用生成类的实例对象,直接可以用。

它的语法格式:<类名>.<类变量名|类方法名>  
作者: 静以修身    时间: 2013-9-11 11:20
你的程序有点点问题:首先你的主函数定义在类外面了,其次在主函数调用Home()方法的时候h要大写,Man.home()改成Man.Home(),类中的静态方法可以直接通过类名来访问,即类.静态方法,不需要建立对象,所以是可以直接调用Man类中的Home方法。
作者: 赵凯    时间: 2013-9-11 11:31
你写的这个不对吧,应该在定义一个class类,将主函数放进去,
       class   Man
{
static  void Home ()
{
System.out.println("HOLLOw");
}
}
class Test{
public   static  void  main (String[] args)
{
Man.Home();
}
}
静态方法可以不创建对象,直接用类名调用,类名.方法名
作者: 周文斌    时间: 2013-9-11 12:52
楼上的都说了代码上的小瑕疵,我就再解释一下为什么能调用吧。
加载一个类的时候,先加载他的静态方法,静态属性,非静态变量,然后是构造方法(事实上他先于非晶态变量调用,但会等待非晶态变量执行结束后再继续执行)。然后才是普通的方法(调用时才加载)。因此这个类创建对象之前,已经有他的静态方法&属性了。所以可以直接类名.属性名调用。
作者: 李锡碧    时间: 2013-9-11 13:53
  1. class Person{
  2.         //成员变量(实例变量)。创建对象之后,内存中才出现
  3.         String name;
  4.         //静态成员变量(类变量)。Person类加载进内存,就存在。
  5.         static String country = "CN";
  6.         //非静态方法
  7.         public void show(){
  8.                 System.out.println(name+":"+country);
  9.         }
  10.         //静态方法
  11.         public static void show_1(){
  12.                 System.out.println(country);
  13.                 //System.out.println(this.name); //this,super不能在静态方法中使用
  14.                 //System.out.println(name); //name在实例创建前没有。。。
  15.         }
  16. }
  17. class StaticDemo{
  18.         public static void main(String[] args){
  19.                 Person p = new Person();
  20.                 p.name = "zhanggsan";
  21.                 p.show();
  22.                 System.out.println(Person.country);//输出CN
  23.                 Person.show_1();
  24.                 }
  25. }
复制代码
类中的静态方法可以直接通过类名来访问(类.静态方法)不需要建立对象。。。

wenti.png (58.41 KB, 下载次数: 46)

wenti.png

作者: lonely_zb    时间: 2013-9-11 15:42
类中的静态方法可以直接通过类名打点来访问,即类.静态方法
不需要建立对象,所以是可以直接调用Man类中的Home方法。





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