java - java中的静态和非静态方法

标签 java class methods static-methods

<分区>

Possible Duplicate:
When should a method be static?

我正在尝试为地铁/地铁售票机制作一个接口(interface)类。好吧,不是为了真实,而是为了计算机科学模块的类(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();
 }
}

最佳答案

将类想象成 cookies 切割器,将对象想象成 cookies (类的一个实例)。静态方法是类本身(cookie 切割器)的一部分方法,如 MyClass.myMethod(); 中所示,而非静态方法是类实例(cookie)的一部分,如 new MyClass().myMethod();.

在您的情况下,静态方法通常是售票机特有的东西,比如计算应该扣除多少钱。非静态方法是特定于单个售票柜台的事情,例如跟踪它处理了多少票。

这里是一些更多的信息:
http://cscie160-distance.com/nonstatic.html

关于java - java中的静态和非静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4581482/

相关文章:

java - all_user 和 role_user 的拦截 url

matlab - 如何在 Matlab 中检查一个类是否有特定的基类

c++ - 为什么第一 block 代码产生垃圾值,而第二 block 代码将类成员的值相加?

php - 一般 MVC 问题 - 命名、结构 (PHP)

java - 如果您不知道 Java 中的对象来自哪个类,如何从 vector 中的对象引用方法?

objective-c - objective-c 和C++中的函数调用

java - 如何在 Hibernate 中将 map 保存在 map 内?

java - 如何获取TreeMap中超过某个键的值

java - 我的 Thread.sleep() 有问题

java - equals 方法在 java 中不起作用。硬件