2014-09-01 55 views
1

的方法我有兩個選擇,從運行的內部訪問一個方法:正確的方式來訪問,從運行的

的情況下1:

public class ParentClass{ 

    private void otherMethod(){ 
     // some work 
     // may call someMethod() from here also 
    } 

    class MyThread implements Runnable{ 
     @Override 
     public void run() { 
      someMethod(); 
     } 

     private void someMethod(){ 
      // some work 
     } 
    } 
} 

的情況下2:

public class ParentClass{ 

    private void otherMethod(){ 
     // some work 
     // may call someMethod() from here also 
    } 
    class MyThread implements Runnable{ 
     @Override 
     public void run() { 
      someMethod(); 
     } 
    } 

    private void someMethod(){ 
    // some work 
    } 
{ 

我想要知道的優缺點的定義someMehod()方法裏面的MyThread

和兩種情況的區別。

+0

這不是一個SE的問題。你應該問這http://programmers.stackexchange.com/ – Archlight 2014-09-01 06:35:17

+0

你在這兩種情況下做同樣的事情。 – 2014-09-01 06:35:50

+0

這取決於你的課程和你想做什麼。也就是說,這個問題不能按原樣回答。 – Raedwald 2014-09-01 07:02:57

回答

1

簡單:使用所需的最小範圍和最嚴格的可見性。

如果someMethod()僅用於MyThread,那麼很明顯地將它放在MyThread並使其成爲private

如果ParentClass也使用someMethod(),則將其放入ParentClass。如果僅從ParentClassMyThread調用someMethod(),則將其設爲private。如果從其他包類(相同包)中調用它,請將其封裝爲私有或protected。如果它也是從子類中調用的,則使其成爲protected。如果它也是從其他包中調用的,則將其設爲public

相關問題