2011-08-31 3 views
0

私は以下のような抽象クラスを作成できますか?私は抽象クラスでプライベート最終フィールドを持つことができます

abstract class A{ 
private final String foo; 
private final String too; 

public A(final String foo, final String too) { 
    this.foo= foo; 
    this.too= too; 
} 
public String getfoo(){ 
     return foo; 
    } 
public String gettoo(){ 
     return too; 
    } 
} 
+3

試してみるとどうなりますか?なぜそれが不可能かもしれないと思いますか? –

+1

なぜですか?あなたが聞きたい特定の質問はありますか? –

答えて

-1

もちろん、このクラスの1つのオブジェクトを作成することはできないため、良い方法ではありません。主な点は、その中に抽象関数を定義していないため、このタイプのクラスを必要としないことです。しかし、あなたの質問によれば、この種の抽象クラスを作成することは間違いありません。

7

短い:はい。

Long(er):抽象クラスは、パーツがまだ欠落している可能性があるため、そのままインスタンス化できないクラスです。したがって、私はプライベートフィールドを持つことができます。 getters/setter以外では、サブクラスにはアクセスできないことに注意してください。

0

はいできます。

1

あなたのコードが正しい..です可能性がフィールドへの直接アクセスを持っている、あなたのサブクラスこのクラスを拡張する、すなわちものを許可するようprotectedの代わりに、プライベートにすることを検討してください。
注:抽象クラスの優れた実践は保護されたコンストラクタです。ビーコンクラス自体はインスタンス化できません。また、継承クラスはsuper(...)コンストラクタを呼び出す必要があります。

+0

「良い練習」について - あなたはそう言いますか? http://stackoverflow.com/a/260779/3712268 – pawpaw

関連する問題