java中的静态和非静态方法

use*_*084 1 java methods static-methods class

可能重复:
方法何时应该是静态的?

我正在尝试为管/地铁票机制作接口类.不是真的,而是计算机科学模块的课程.我不明白何时使用静态方法.我不太了解计算机科学,但主要方法似乎使用静态.

class UNInterfaceTest
{
   public static final int NOTTING_HILL = 1;
   public static final int HIGH_KEN = 2;
   public static final int GLOUS = 3;
   public static final int SOUTH_KEN = 4;
   public static final int SLOANE = 5;
   public static final int VICTORIA = 6;
   public static final int ST_JAMES = 7;
   public static final int WESTMINSTER = 8;
   public static final int QUIT = 10;
   private Input in = new Input();

private static void displayMenu()
{
   System.out.println("CIRCLE LINE: Please Select the Number of Your Current Station.");
   System.out.println(NOTTING_HILL + ": Nottinghill_Gate");
   System.out.println(HIGH_KEN + ": High_Street_Kensignton");
   System.out.println(GLOUS + ": Gloucester_Road");
   System.out.println(SOUTH_KEN + ": South_Kensignton");
   System.out.println(SLOANE + ": Sloane_Square");
   System.out.println(VICTORIA + ": Victoria"); 
   System.out.println(ST_JAMES + ": St_James_Park");
   System.out.println(WESTMINSTER + ": Westminster");
   System.out.println();
   System.out.println(QUIT + ". Quit");
}

public static void run()
{
    while(true)
    {
        displayMenu();
        int option = getMenuInput();
        if (option == QUIT)
    {
        break;
    }
    doOption(option);
    }
 }

private static void doOption(int option)
{ 
    switch(option){
 case NOTTING_HILL:
     //findNottinghill_Gate();
       break;
      case HIGH_KEN:
     //findHighStreetKensignton();
       break;
      case GLOUS:
     //findGloucesterRoad();
       break;
      case SOUTH_KEN:
     //findSouthKensignton();
       break;
      case SLOANE:
     // findSloaneSquare();
       break;
      case VICTORIA:
     //findVictoria();
       break;
      case ST_JAMES:
     //findStJamesPark();
       break;
      case WESTMINSTER:
      //findWestminster();
       break;
      default:
        System.out.println("Invalid option - try again");
    }
} 
private int getMenuInput()
{
    //KeyboardInput val = new KeyboardInput();
    System.out.print("Enter menu selection: ");
    int option = in.nextInt();
    in.nextLine();
    return option;
}

 public static void main(String[] args)
 {
    run();
 }
}
Run Code Online (Sandbox Code Playgroud)

Ani*_*Dev 6

将类视为cookie切割器,将对象视为cookie(类的实例).静态方法是类本身的一部分(cookie切割器),如同MyClass.myMethod();,而非静态方法是类实例(cookie)的一部分,如new MyClass().myMethod();.

在您的情况下,静态方法通常是特定于售票机的东西,例如计算应扣除多少钱.非静态方法是特定于单个故障单计数器的事物,例如跟踪它已处理的故障单数量.

以下是一些更多信息:http:
//cscie160-distance.com/nonstatic.html