Java OOP:如何强制扩展类提供私有方法?
示例:如何将进一步的特定处理方法设置为私有方法 原因:我希望能够创建一个类型为B或C的新对象,并且程序员只能看到doStuff()。同时,B类和C类提供附加功能Java OOP:如何强制扩展类提供私有方法?,java,oop,Java,Oop,示例:如何将进一步的特定处理方法设置为私有方法 原因:我希望能够创建一个类型为B或C的新对象,并且程序员只能看到doStuff()。同时,B类和C类提供附加功能 abstract class A { protected abstract void furtherSpecificProcessing(); //concrete method utilizing abstract method public void doStuff() { //busy code f
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
}
}
我认为您不能强制返回类型为私有的,以便重写方法 访问权限不得更严格。可以减少限制
我建议您阅读。我认为您不能强制返回类型为私有,以便重写方法 访问权限不得更严格。可以减少限制
我建议阅读。将
进一步特定处理()
重写为受保护的,而不是在扩展类中作为公共的。将进一步特定处理()
重写为受保护的,而不是在扩展类中作为公共的。将方法声明为受保护的,而不是在类B和C中作为公共的。
比您需要的更有效:
B b = new B();
b.doStuff(); // Will do stuff
b.furtherSpecificProcessing(); // Will not compile
C类的实例也是如此,在B类和C类中都将方法声明为受保护的,而不是公共的。 比您需要的更有效:
B b = new B();
b.doStuff(); // Will do stuff
b.furtherSpecificProcessing(); // Will not compile
C类的实例也是如此围绕这一点的任何设计方法?程序员可见是什么意思;b、 doStuff();或C=新的C()C.doStuff();不是b.doStuff()和b.FurthSpecificProcessing(),也不是其他人建议的c.doStuff()和c.FurthSpecificProcessing()。您可以尝试使用受保护的类,并确保相关类位于同一个包中。有任何围绕这一点的设计方法吗?程序员可见是什么意思?b=新b();b、 doStuff();或C=新的C()C.doStuff();不是其他人建议的b.doStuff()和b.FurthSpecificProcessing()或同等的c.doStuff()和c.FurthSpecificProcessing(),您可以尝试使用protected,并确保相关类位于同一个包中。为什么不将其声明为protected?(或者我这里遗漏了一些东西…)针对接口编程。看到了您的编辑。那么为什么该方法在C和B中被声明为公共的呢?如上所述,使该方法受到保护。我看不出你在这一点上还要求什么。你是如何获得裁员的?在超级类(AbsA)中放置常见的东西。虽然不能限制可见性,但您可以通过仅向类的用户公开接口来隐藏它们。为什么不将其声明为受保护?(或者我这里遗漏了一些东西…)针对接口编程。看到了您的编辑。那么为什么该方法在C和B中被声明为公共的呢?如上所述,使该方法受到保护。我看不出你在这一点上还要求什么。你是如何获得裁员的?在超级类(AbsA)中放置常见的东西。虽然可见性不能受到限制,但您可以通过仅向类用户公开接口来隐藏它们。您还可以将FutureSpecificProcessing设置为包私有(这将稍微不那么可见)。您还可以将FutureSpecificProcessing设置为包私有(这将稍微不那么可见)。