2017-05-03 69 views
-1

如果我有以下方法:如何靜態方法轉換成實例方法

public static void flipHorizontal(Picture v){ 
    int w = v.getWidth(); 
     int h = v.getHeight(); 
     int width = w; 
     for(int y = 0; y < h; y++){ 
      for(int x = 0; x < w/2; x++){ 
       Pixel pixelobj = v.getPixel(x, y); 
       Pixel bottomPixel = v.getPixel(width - 1 - x, y); 
       bottomPixel.setColor(pixelobj.getColor()); 
     } 
    }  
} 

如何創建它變成一個實例方法?我知道這與去除靜電有關,但我從哪裏去?

+7

只是刪除靜態..它不再是靜態的 – Rahul

+1

不要害怕。去除靜電並開心。之後的任何問題,向我們解釋可以幫助你。 –

回答

4

刪除static關鍵字後,您需要更改調用方法。

例如如果類被稱爲MyClass的,和你以前做

MyClass.flipHorizontal(myPicture); 

...你這時就需要從封閉類的實例調用你的方法。例如

MyClass blah = new MyClass(); 
blah.flipHorizontal(myPicture); 

取決於封閉類(或它的實例變量中的一個)是否爲Picture,它可能是有意義的除去的flipHorizontal輸入參數(因爲這將能夠憑藉已訪問這些對象不再是一個靜態方法)

+0

您可以添加一些有關可能更改方法的內容,從而不需要參數。含義:沒有靜態方法的意義在於將該參數設置爲類中的字段。這可能或不會在這裏有意義。 – GhostCat

+0

@GhostCat - 好點,更新答案 – Catchwa

0

我認爲你不需要獲得一個靜態方法的實例,你可以使用靜態方法與className.staticMethod。 utilsClass中有很多靜態方法,所以你只需要className來使用方法,使用實例會更加舒適。 如果你不想使用className,我想你只是想讓方法成爲一個普通的方法,只是在方法中刪除static關鍵字。 謝謝