0

示例:我如何将进一步的SpecificProcessing 方法设为私有方法?

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

我不认为你可以强制返回类型是私有的覆盖方法。

访问权限不能更严格。可以少一些限制。

我建议阅读方法覆盖规则

于 2012-10-16T18:41:18.933 回答
2

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

于 2012-10-16T18:50:26.570 回答
1

在 B 类和 C 类中将方法声明为受保护而不是公共的。比您需要的方法更有效:

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

C类的实例也是如此

于 2012-10-16T18:51:31.083 回答