2011-04-28 44 views
3

我在理解Java中的類時遇到了一些麻煩。Java類對我非常困惑

如你如何在輔助類這樣的聲明「輸入器」?

public class Helper 
{ 
    public void Helper(String z) 
    { 
      if(z.length() == 0) 
      { 
       System.out.println("You can't leave it blank!"); 
       System.exit(1); 
       System.out.println("It's not working... ;("); 
      } 
    } 

    public void Inputter(int a) 
    { 
      // blah blah 
    } 
} 

你這樣稱呼它?

Helper x = new Inputter(); 

請幫忙,不,這不是一門功課的問題。

感謝, 微笑

編輯:這將是正確的:

public class Helper 
{ 
    public Helper(String z) 
    { 
      if(z.length() == 0) 
      { 
       System.out.println("You can't leave it blank!"); 
       System.exit(1); 
       System.out.println("It's not working... ;("); 
      } 
    } 

    public void Inputter(int a) 
    { 
      // blah blah 
    } 
} 

,並宣稱:

Helper x = Helper(); 

並感謝大家給了我一個熱烈的歡迎計算器! :d

+3

閱讀教程掌握基本知識:http://download.oracle.com/javase/tutorial/ – 2011-04-28 14:13:03

+0

我建議您遵循Java編碼對話框,並使用camelCase作爲方法名稱,使用UpperCase作爲類名稱。這樣你就不會混淆方法和類名。當你可以拋出一個異常時,也不要調用System.exit(),比如'throw new IllegalArgumentException(「你不能把它留空!」) – 2011-04-28 14:17:01

+0

@BalusC那麼你如何將它們聲明爲類?我唯一感到困惑的是IllegalArgumentException(我現在正在獲取)以及類和方法。 – 2011-04-28 14:23:57

回答

10

你的問題不在類中,它與構造函數和方法以及它們之間的區別。

方法可以有你喜歡的任何名稱,但必須聲明返回類型(可能void),他們正在這樣調用:

ReturnType r = methodName(param1, param2) 

構造函數用於創建的類(對象)的實例。它們必須具有相同的名稱作爲類,它們不得返回類型(甚至沒有void),他們正在這樣調用:

MyClass m = new MyClass(param1, param2); 

有幾個問題在你的代碼:

  • Helper有一個構造函數的正確名稱,而是因爲它聲明void返回類型,編譯器將它視爲一種方法。
  • Inputter甚至沒有正確的構造函數名稱。與new使用它作爲一個構造函數,它必須是一個名爲Inputter

也許你應該開始了閱讀的Java教程的introduction to OO部分類的一部分。

+0

@ micheal-borgwardt謝謝! – 2011-04-28 14:32:02

+0

好的,你的答案比我的+1先生好 – brandon 2011-04-28 14:41:22

1

輸入器()已定義的是一個方法,或者你可以稱之爲行爲。您無法爲行爲創建實例。

還有一個問題是,你不能有一個構造函數的返回類型。助手是類名和構造器具有返回類型,是不正確

關於你quesiton,如果你要調用輸入器,你應該這樣做像下面這樣。

Helper helper = new Helper("test"); 
helper.Inputter(100); 

以小寫字母開始方法是一種很好的做法。

+0

小小號是什麼意思?如在:輸入者? – 2011-04-28 14:19:57

+0

@SmilingDevil:是的.. – bragboy 2011-04-28 14:22:11

1

您必須創建的Helper實例之前,你可以使用Inputter

Helper x = new Helper("some string"); 

使用Inputter,試試這個:

//create a new helper 
Helper x = new Helper("some string"); 
//use the Inputter method of the helper. 
x.Inputter(1); 

瞭解這裏的事情是,Helper是類,x實例的一類,而Inputter實例方法(它是從靜態方法不同)在Helper類。

0

代碼中的輸入器不是類。這是一種方法。

爲了使下面的語句正確:

Helper x = new Inputter(); 

你需要創建輸入器類擴展 Helper類。

0

Inputter是不是一類。這是Helper課程的一種方法。所以你不能實例化它。

0

你可以這樣調用

String someString = "some string"; 
Helper x = new Helper(someString); 
int someInt = 1; 
x.Inputter(someInt); 
1

這裏的唯一對象是助手。如果你想使一個新的幫手,那麼你會說

Helper X = new Helper("blah blah"); 

實例,如果你想調用輸入器,那麼你剛纔說

X.Inputter(1234); 

這將調用輸入器功能的特定實例助手的X

0

首先,從基礎開始。

類最能代表名詞。這意味着一個類是一個(通常)一個事物的模型。方法最能代表這些名詞上的動詞。擺脫這種理想有時是必要的;然而,你越遠離這樣的理想,就越難理解發生了什麼。隨着對例外的點頭,因爲你是一個初學者,讓我們不要被打破在例外,但遵守規則。

public class Person { 

    private String name; 

    private int age; 

    public Person(String name) { 
    this.name = name; 
    this.age = -1; 
    } 

    public void setAge(int value) { 
    if (value < 0) { 
     throw new IllegalArgumentException("Age must be greater than zero"); 
    } 
    this.age = value; 
    } 

    public int getAge() throws IllegalStateException { 
    if (age < 0) { 
     throw new IllegalStateException("Age was not set"); 
    } 
    return this.age; 
    } 
} 

通讀上面的類,並將其樣式用於您的開始程序。當你發現它的風格不僅僅是幫助你時,你可能找到了一個需要其他技術的地方。

0

new關鍵字保留用於實例化(用於表示「製作新」類的花哨詞)。您的班級製作方式,當您製作新的Helper時,會運行一個功能。這是構造函數,並且被命名爲類。

一旦實例化一個類,你獲得在其內訪問東西(例外是static方法/屬性,任何人都可以訪問它);所有這些都不是privateprotected。現在

,對OOP很短的介紹(面向對象編程): 你有類,基本上都是功能塊。在這些類中有兩件事:方法和屬性(許多名稱,但這就是我稱之爲的)。

方法基本上是一個很好的ol函數:它有一個輸入和一個輸出。 屬性與其他變量非常相似。

現在,Java和其他許多面向對象的語言,有類的聲明和類實例之間的分離。類聲明基本上是靜態編碼的類;正是你放在代碼中的東西。類實例正在使用類聲明並將其投入使用:您可以更改和使用它們中的方法和屬性。

所以,如果你想調用輸入器,你應該這樣做是這樣的:

Helper bob = new Helper('Bloop'); 
bob.Inputter(42); 

這裏發生了什麼?我們創建了一個名爲bob的新變量,其類型爲Helper。在構建新的Helper時,我們也運行構造函數。查看構造函數,我們傳遞一個值(在這種情況下,'Bloop'),並且該函數正常運行,無需我們手動調用它。

現在我們要使用Helper類的Inputter方法。爲此,我們需要通過使用bob.(注意點)訪問Helper類的實例(在本例中爲bob),然後像調用其他函數一樣調用它:Inputter(parameters)。將它粘合在一起我們得到了bob.Inputter(parameters)

這是一個對象方向的真正相當蹩腳的解釋,但沒有涵蓋那麼多,但它應該讓你開始。我建議寫一本關於Java的書或閱讀在線教程。