OOP:如何强制扩展类提供私有方法?

时间:2012-10-16 18:39:51

标签: java oop

示例:如何将otherSpecificProcessing方法设为私有方法?

原因:我希望能够新建一个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
 }
}

3 个答案:

答案 0 :(得分:3)

我认为您不能强制将返回类型设为私有以覆盖方法。

  

访问权限不得更具限制性。可以减少限制。

我建议阅读method overriding rules

答案 1 :(得分:2)

furtherSpecificProcessing()覆盖为受保护,而不是扩展类中的公开。

答案 2 :(得分:1)

在B和C类中将方法声明为protected而不是public。 比你需要的还要工作:

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

同样适用于C类实例