0

例:さらなる特定の処理メソッドをプライベート メソッドにするにはどうすればよいですか?

理由:タイプ B または C のオブジェクトを新規作成し、doStuff() のみをプログラマーに表示できるようにしたいと考えています。同時に、クラス B と C は追加機能を提供します。

abstract class A
{
  protected abstract void furtherSpecificProcessing();

  //concrete method utilizing abstract method
  public void doStuff()
  { 
   //busy code
   furtherSpecificProcessing();
   //more busy code
  }

public class B extends A
{
  public void furtherSpecificProcessing
  {
    //Class B specific processing
  }
}

public class C extends A
{
 public void furtherSpecificProcessing
 {
   //Class C specific processing
 }
}
4

3 に答える 3

3

メソッドをオーバーライドするためにreturntypeをprivateにすることはできないと思います。

アクセスをより制限してはいけません。制限を緩和できます。

ルールをオーバーライドするメソッドを読むことをお勧めします。

于 2012-10-16T18:41:18.933 に答える
2

furtherSpecificProcessing()クラスを拡張する際に public としてではなく、protected としてオーバーライドします。

于 2012-10-16T18:50:26.570 に答える
1

クラス B と C の両方で public ではなく protected としてメソッドを宣言します。必要なものよりも機能します。

B b = new B();
b.doStuff(); // Will do stuff
b.furtherSpecificProcessing(); // Will not compile

同じことがクラス C のインスタンスにも当てはまります

于 2012-10-16T18:51:31.083 に答える