2017-09-16 68 views
-5

那麼我知道在第一個xyz通過method(xyz)其中xyz可能是變量或在Java中的字符串,進一步的方法本身是由用戶定義,所以這可能是(或不)返回取決於寫入的身體編碼器。邏輯上方法(xyz)和xyz.method()之間有什麼區別?

但現在這裏來第二個xyz.method(),我們知道這裏xyz是對象 我們是否將xyz傳遞給此方法就像第一個。我的意思是裏面發生了什麼這是如何工作的?

請深入解釋一下,你可以從任何這個或任何這個例子中作爲例子。

  1. str.length();
  2. str.toChar();

回答

1

xyz.method() - >對於這個工作,方法是由人誰寫的類XYZ XYZ類露出裏面。由於對象本身是調用方法,它知道它自己,所以沒有任何東西像對象xyz傳遞給方法。但是在這個方法裏面,xyz將會是可用的,因爲xyz是被調用對象。方法(xyz) - >方法寫在需要類型爲XYZ的對象的任何類中,此方法不一定是類XYZ的一部分。這裏xyz作爲參數傳遞給方法,並且不會像這樣提供。

1

method(xyz)表示您正在調用當前類中定義的方法。

xyz.method()表示xyz是某個類的對象(可以說是XYZ),並且您正在調用一個在XYZ類中定義的方法。

該代碼段將您

class XYZ { 
    public void method() { 
     // some code here 
    } 
} 

class SomeOtherClass { 
    public void method1(XYZ xyz) { 
     xyz.method(); // case two 
    } 

    public void mainMethod() { 
     XYZ xyz = new XYZ(); 
     method1(xyz); // case one 
    } 
} 

更有助於在第一種情況:

xyz是一個參數的方法。

在第二種情況:

我們想要調用其在類定義XYZ的方法。但是你不能像第一種情況那樣直接訪問它。要訪問其他類中定義的方法或字段,我們必須創建該類的實例(在我們的示例中爲xyz),並且通過該實例,只要這些方法不是私有的,我們就可以訪問這些方法。

1

從面向對象來看,存在邏輯差異。例如,如果我們調用方法kill,那麼xyz.kill()表示對象xyz自殺,如果我們調用方法kill(xyz),則有人殺死xyz。

從技術上講,如果方法不是靜態的,則存在邏輯差異。 xyz.method()表示xyz一定不能是null(只要該方法是非靜態的)。 method(xyz)表示xyz可以爲null,並且可以是其他內容。

此外沒有邏輯差異。

相關問題