1) OnCreateは、ClsLastクラスのインスタンス化されたオブジェクトのパブリックメソッドです。 しかし、私はOnCreateメソッドを保護されたとして制限したいと思っていました。オブジェクト指向のインターフェイス、抽象クラス、コンクリートクラスに関する質問
interface InterFace {
void OnCreate();
}
class ClsFirst implements InterFace {
@Override
public void OnCreate() { }
}
class ClsLast extends ClsFirst{ }
class Test {
static void main(){
ClsLast objClsAct = new ClsLast();
objClsAct.OnCreate();
}
}
2)インタフェース
interface InterFace {
protected void OnCreate();
}
で保護されたとして、私は方法をOnCreateの設定した場合、私はこのようなエラーを取得しています:私は、保護設定した場合 Illegal modifier for the interface method OnCreate; only public & abstract are permitted
3)このようにInterFaceを実装するClsFirstクラス内のメソッド:
Cannot reduce the visibility of the inherited method from InterFace
4)私は抽象クラスとしてClsFirstを変更して、実装インタフェース、私は内部のメソッドをOnCreate関数を実装するためにしていない
interface InterFace {
void OnCreate();
}
abstract class ClsFirst implements InterFace {
}
:
interface InterFace {
void OnCreate();
}
class ClsFirst implements InterFace {
@Override
protected void OnCreate() { }
}
私はこのエラーを取得していますClsFirstクラスだがClsLastなぜ?私はインターフェイスのメソッドは、派生クラスでのみ使用することができます設定することができますどのように
概要
- ?
- Interface内の保護されたアクセスでメソッドを設定できないのはなぜですか?
- なぜInterFaceを実装した後に、アクセサーのタイプをpublicと違うように設定できないのですか?
- インタフェースを実装していても、1つのクラスが抽象クラスを派生するまで、実装されていないメソッド自体を追加する必要はありません。どうして?
ありがとうございます。
インターフェイスの実装はどのような状況だと思っていますが、派生クラスへのアクセスのみを制限するのは意味があると説明できますか?派生クラスだけがメソッドを見ることができる場合、なぜインターフェイスが必要でしょうか? – dtb
私はインターフェイスを作成し、クラス構造の作成の初期段階からいくつかのルールを入れたいと思っています。しかし、これをしようとしている間、私は他の質問に直面しました。あなたの答えで私と誰のためにもOOPについての良い情報があるかもしれないと思ったのですが、私の最初の欲望は、ルールとインターフェイスと抽象クラスを使って良いクラス構造を作ることです。 – uzay95
OOPの1つのポイントは、開発者がクラスの非公開部分を自由に設計できることです。ルールは、クラス構造のパブリック部分にのみ置くことができます。 – dtb