2016-11-21 48 views
1

例如:在不使用保護的情況下處理抽象類的正確方法是什麼?

public abstract class SomeBaseClass extends Fragment { 
    protected static final String INT_TAG = "int_tag"; 
    protected int someInt; 

    //... 
} 

public class ChildClass extends SomeBaseClass { 
    public static ChildClass newInstance(int argInt) { 
     Bundle args = new Bundle(); 
     bundle.putInt(INT_TAG, argInt); 
     ChildClass fragment = new ChildClass(); 
     fragment.setArgs(args); 
     return fragment; 
    } 

    public void onCreate() { 
     someInt = getArguments().getInt(INT_TAG); 
    } 

    //... 
} 

不過我聽說這是一個壞主意,用在抽象類中受保護的變量由於某種原因(我不知道爲什麼)。有什麼選擇?

+1

protected成員變量,違反了面向對象的主要原理:封裝(又名信息隱藏)。但簡單地將它們設置爲私有的並添加(受保護的)getter/setter方法不會改變它。通過在(抽象)基類中聲明屬於擴展類的變量,而不需要在每個子類中聲明變量,繼承經常被誤用於代碼重用。所以我能說的最好的是:總是在那個真正使用它們的類中聲明你的變量'private'。 –

+0

@TimothyTruckle抽象類和私人不能很好地合作 – developer

+0

@javaguy對我來說,它完美的工作。 –

回答

0

訪問受保護的屬性是一個壞主意,因爲它打破了封裝,使您的耦合性更強。不過,你可以使用getters和setter來訪問你的protected域。

References

相關問題