2011-07-27 16 views
2

我剛剛看了一個叫做「許多方法和實例」的YouTube教程。他做了一個程序,在其中輸入內容,並說「你的第一個gf是_」。但它太複雜了。首先是主類:printf,說,getName setName

import java.util.Scanner; 

public class MethodsInstances2 { 
    public static void main(String args[]) { 
     Scanner input = new Scanner(System.in); 
     MethodsInstances object = new MethodsInstances(); 
     System.out.println("Enter name of first gf here: "); 
     String temp = input.nextLine(); 
     object.setName(temp); 
     object.saying(); 
    } 
} 

其次是它使一個物體從類:

public class MethodsInstances { 
    private String girlName; 
    public void setName (String name){ 
     girlName=name; 
    } 
    public String getName(){ 
     return girlName; 
    } 
    public void saying(){ 
     System.out.printf("Your first gf was %s", getName()); 
    } 
} 

這似乎完全太過於複雜,而標題是所有的東西,我不明白,考慮到我仍然是Java的新手。下面是我輸入歷時快4倍:

import java.util.Scanner; 
public class programtest { 
    public static void main(String args[]){ 
     Scanner test = new Scanner(System.in); 
     String name; 
     System.out.println("Enter the name of your first girfriend: "); 
     name = test.next(); 
     System.out.println("Your first girlfriend was " + name); 
    } 
} 

誰能告訴我做什麼嘖嘖據說做了點,什麼標題的話是什麼意思?

非常感謝,丹

+0

本教程是用類和對象名稱的一個可怕的選擇,一個簡單的概念的一個很好的例子。我重複了這個例子,以便在下面的答案中更有意義。 (這一切都應該工作在一個單一的文件。) –

回答

4

本教程被命名爲「許多方法和實例」,並且從我的POV中很簡單地顯示瞭如何創建一個類,實例化它並調用它的方法。如果它的目的是儘可能以最簡單的方式進行操作,它會被稱爲「獲取一些控制檯輸入並將其吐出」。

視頻教程的一點是不是創建一個過於複雜的程序而是證明上的對象如何調用方法。

你有一個名爲MethodInstances(不是一個很好的例子名稱,btw)的類,你實例化,然後調用它的方法來保存狀態(gf名稱)並將其取回並顯示出來。 (我建議重構的例子有更有意義的空話,因爲它是造成混亂。)

試試這個上:

import java.util.Scanner; 

public class ObjectInstanceMethodExample { 
    public static void main(String args[]) { 
     Scanner input = new Scanner(System.in); 
     FirstGirlfriend firstGF = new FirstGirlfriend(); 
     System.out.println("Enter name of first gf here: "); 
     String temp = input.nextLine(); 
     firstGF.setName(temp); 
     firstGF.sayFirstGirlfriendName(); 
    } 
} 

class FirstGirlfriend { 
    private String girlName; 
    public void setName (String name){ 
     girlName=name; 
    } 
    public String getName(){ 
     return girlName; 
    } 
    public void sayFirstGirlfriendName(){ 
     System.out.printf("Your first gf was %s", getName()); 
    } 
} 

你短,避免創建一個單獨的類短路過程,改用局部變量。它的工作原理很簡單,但這不是教程試圖教授的內容。

我建議在進入面向對象的東西之前找到更簡單的例子,或者......擁抱面向對象並運行它。

順便說一下,作爲程序員,你總是不會以最簡單的方式做事。最近似乎最簡單的似乎是最簡單的。任何稍微不平凡的項目,即使有一點複雜性,都會以最簡單的方式迅速變得站不住腳。

+0

其實沒有其他人的tuts是如此混亂,所以我想多花一點時間,我可能實際上得到的一切:D –

+0

看看我的自定義tut代碼。我認爲它可能比原始來源更有意義。 –

1

它看起來像一個教程演示了吸氣二傳手方法在一類,即數據隱藏。使用設置方法向對象添加內容,然後使用獲取方法檢索它。

是的,這太複雜了。但是這項技術對於更大更實際的問題非常有用。

+0

非常感謝,這是對我來說最令人困惑的事情之一。因此,只需要驗證,set會根據需要獲取並存儲它,並且get會讓您隨時檢索它? –

+0

是的。但請記住,getter/setter方法可能比簡單讀/寫私有變量更有魔力。 –

1

對於初學者,您的代碼使用 test.next(); 取代原來的 input.nextLine();

printf是程序員已知的最古老的函數之一,大約30歲!

它使用衆所周知的通用樣式的格式化參數來「美化」文本輸出並將不同類型插入到字符串中。

+0

現在有一點點意義,thx –

0

第二個類只包含一個名爲「girlName」的字符串。由於此字段具有私人訪問權限,因此無法從其自己的課程外部訪問(請參閱數據隱藏)。

因此,您可以使用所謂的getter和setter方法,它們可以從外部訪問 - 設置String值或接收它。

你寫的,而不是:

MethodsInstances.girlName = "myGirlsName"; 
MethodsInstances.setName("myGirlName"); 
相關問題