黑马程序员技术交流社区

标题: 有错么 [打印本页]

作者: 来明坤    时间: 2012-8-30 00:23
标题: 有错么
public class Something {
     public static void main(String[] args) {
        Something s = new Something();
        System.out.println("s.doSomething() returns " + doSomething());
    }
     public String doSomething() {
        return "Do something ...";
    }
}

作者: 牛杨    时间: 2012-8-30 00:29
public class Something {
      public static void main(String[] args) {
         Something s = new Something();
         System.out.println("s.doSomething() returns " + s.doSomething());
     }
      public String doSomething() {
         return "Do something ...";
     }
}
有错,红色是修改过的地方。
作者: 冯心程    时间: 2012-8-30 00:33
首先把 主函数是静态的 肯定不能直接去访问非静态的方法的
你把doSomething() 前面加个static
作者: 王自强    时间: 2012-8-30 00:34
  1. class Something {
  2. public static void main(String[] args) {
  3. Something s = new Something();
  4. System.out.println("s.doSomething() returns " + s.doSomething());//doSomething()改为s.doSomething();
  5. }
  6. public String doSomething() {
  7. return "Do something ...";
  8. }
  9. }
复制代码
否则会报错。估计你忘写了......
因为doSomething()不是静态的,不能直接被主函数(静态的)调用,可以通过对象调用,s.doSomething().
作者: 黑马--张帅    时间: 2012-8-30 00:42
肯定是有错的!当你在静态方法中调用其他方法时,其他方法必须定义为静态的。你在调用doSomething()时,必须把该方法定义为public static String doSomething()
修改的代码如下:
//当创建对象时如下:
public class Something {
      public static void main(String[] args) {
         Something s = new Something();//这句话可要可不要,因为在同一个类中可以直接进行调用
                        //当用对象进行调用时,格式必须是  对象.方法名
         System.out.println("s.doSomething() returns " + s.doSomething());
     }
      public static String doSomething() {
         return "Do something ...";
     }
}
//不创建对象时如下:
ublic class Something {
      public static void main(String[] args) {
         
         System.out.println("s.doSomething() returns " + doSomething());
     }
      public static String doSomething() {
         return "Do something ...";
     }
}
作者: 寇龙飞    时间: 2012-8-30 01:22
  1. package com.itheima.test;
  2. public class Something {
  3.      public static void main(String[] args) {
  4.         Something s = new Something();
  5.         System.out.println("s.doSomething() returns " + s.doSomething());
  6.     }
  7.      public String doSomething() {
  8.         return "Do something ...";
  9.     }
  10. }
复制代码
学习标记。
作者: 陈莹    时间: 2012-8-30 15:56
你的程序的错误提示是无法从静态上下文中引用非静态方法 doSomething(),因为你的主函数是静态的,静态函数只能使用静态成员,所以你得将doSomething函数修饰为static类型的,这样你也没必要定义一个Something对象了,浪费内存。
这样代码可以改为:
public class Something {
     public static void main(String[] args) {
               System.out.println("s.doSomething() returns " + doSomething());
    }
     public static String doSomething() {
        return "Do something ...";
    }
}

如果不想将doSomething函数定义为静态的,你可以通过对象调用该方法,代码如下:
public class Something {
     public static void main(String[] args) {
        Something s = new Something();
        System.out.println("s.doSomething() returns " + s.doSomething());
    }
     public String doSomething() {
        return "Do something ...";
    }
}





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