コンパイル時にサブクラスがパブリックメソッドをベースクラスで定義されたもの以外に公開しないようにする方法はありますか?例えばJava:サブクラスがベースクラスと異なるインタフェースを提供しないようにする
:
abstract public class AClass {
abstract public void anAllowedMethod();
}
public class BClass extends Aclass {
public void anAllowedMethod() {
}
public void anAdditionalNonAllowedMethod() {
}
private void thisMethodIsAllowedBecauseItsNotPublic() {
}
}
はおそらく、私はサブクラスを宣言するAClassはで使用できるいくつかのキーワードが唯一AClassは(。すなわち、「anAllowedMethod()」)で定義されたメソッドを実装することができますがありますか?
私はあなたがこれをしたい理由が不思議です。 – MatrixFrog
これらのサブクラスが正しく使用されていることを確認します。私が取り組んでいるプロジェクトでは、サブクラスに不要なメソッドを追加する開発者もいます(既存のインターフェイスではそれを実現できます)。そして、それがわからないと正しくオブジェクトを使用することができなくなりますタイプ。 "クライアント"が基本クラスのインタフェースを知る必要があることが分かっている場合は、単純化されます。 – Joel
あなたができることの1つは、APIを使用する人々がBClass型の変数を宣言しないようにすることです。 'List myList = new ArrayList ()'が 'ArrayList myList = new ArrayList ()'より優れていると考えています。だから、あなたはインスタンス化されたBクラスですが、変数の型はAClassなので、 'anAdditionalNonAllowedMethod()'を使って決して終了することはありません。 –
MatrixFrog