为什么我不能在主类中创建除主方法之外的其他方法?



我是Java的初学者,我有一个关于主类和主方法的基本问题。我尝试在主方法下创建加法等方法。抛出"非静态方法"之类的错误。什么是理性?谢谢。。。

我猜你使用这样的代码。

public class TestClass {
public static void main(String[] args) {
    doSth();
}
public void doSth() {
}

不能从主类调用非静态方法。如果要从主类调用非静态方法,请像这样实例化您的类:

TestClass test = new TestClass();
test.doSth();

并调用该方法。

静态方法意味着您不需要在实例(对象)上调用该方法。非静态(实例)方法要求您在实例上调用它。所以想一想:如果我有一个方法更改ThisItemToTheColorBlue()并且我尝试从main方法运行它,它会改变什么实例?它不知道。您可以在实例上运行实例方法,例如 someItem。将此项更改为颜色蓝色()。

更多信息请访问 http://en.wikipedia.org/wiki/Method_(computer_programming)#Static_methods

从静态方法调用非静态方法

的唯一方法是具有包含非静态方法的类的实例。根据定义,非静态方法是称为某个类的实例的 ON 的方法,而静态方法属于类本身。

就像当你尝试调用没有实例的非静态方法starts与类字符串:

 String.startsWith("Hello");

你需要的是一个实例,然后调用非静态方法:

 String greeting = new String("Hello World");
 greeting.startsWith("Hello"); // returns true 

因此,您需要创建和实例来调用它。

为了更清楚地了解静态方法,您可以参考

https://softwareengineering.stackexchange.com/questions/211137/why-can-static-methods-only-use-static-data

我认为您定义了没有关键字"静态"的方法。不能在静态上下文(如 main 方法)中调用非静态方法。

请参阅 Java 面向对象编程

main 方法是静态方法,因此它不存在于对象中。

要调用非静态方法(定义前面没有"static"关键字的方法),您需要使用 new 创建一个类的对象。

您可以将另一种方法设置为静态,这将解决眼前的问题。但是这样做可能是也可能不是好的面向对象设计。这取决于你想做什么。

如果不实例

化类,则无法从静态方法调用非静态方法。如果你想调用另一个方法而不创建主类的新实例(一个新对象),你也必须对另一个方法使用 static 关键字。

    package maintestjava;
    public class Test {
      // static main method - this is the entry point
      public static void main(String[] args)
      {
          System.out.println(Test.addition(10, 10));
      }
      // static method - can be called without instantiation
      public static int addition(int i, int j)
      {
        return i + j;
      }
    }

如果你想调用非静态方法,你必须初始化类,这样创建一个新实例,类的对象:

package maintestjava;
public class Test {
  // static main method - this is the entry point
  public static void main(String[] args)
  {
      Test instance = new Test();
      System.out.println(instance.addition(10, 10));
  }
  // public method - can be called with instantiation on a created object
  public int addition(int i, int j)
  {
    return i + j;
  }
}

查看更多:维基百科上的静态关键字静态 about.com

相关内容

  • 没有找到相关文章

最新更新