Java 如何强制儿童的私人可见性';抽象类抽象方法上的s方法?
我想强制我的抽象类孩子将我的抽象方法实现为私有的。Java 如何强制儿童的私人可见性';抽象类抽象方法上的s方法?,java,polymorphism,private,abstract,Java,Polymorphism,Private,Abstract,我想强制我的抽象类孩子将我的抽象方法实现为私有的。 可能吗 重写方法的可见性不能小于重写方法的可见性。 也就是说,您不能重写公共方法并将其设置为受保护或私有 由于抽象方法在默认情况下是受保护的或公共的(因为它们应该由子类重写),因此该方法的实现不能是私有的。重写方法的可见性不能低于重写方法的可见性。 也就是说,您不能重写公共方法并将其设置为受保护或私有 由于抽象方法在默认情况下是受保护的或公共的(因为它们应该被子类覆盖),因此该方法的实现不能是私有的。First@Ravinder-Reddy的答
可能吗 重写方法的可见性不能小于重写方法的可见性。 也就是说,您不能重写公共方法并将其设置为受保护或私有
由于抽象方法在默认情况下是受保护的或公共的(因为它们应该由子类重写),因此该方法的实现不能是私有的。重写方法的可见性不能低于重写方法的可见性。 也就是说,您不能重写公共方法并将其设置为受保护或私有
由于抽象方法在默认情况下是受保护的或公共的(因为它们应该被子类覆盖),因此该方法的实现不能是私有的。First@Ravinder-Reddy的答案绝对正确,您不应该使用我的示例而不接受我的条款和条件,这些条款和条件基本上是(“使用风险自负”) 我不能说它漂亮或有用,但我想你可以做如下事情:
public abstract class Master {}
public abstract class Super extends Master{
protected abstract void foo();
}
public class Sub extends Master {
private Inner inner = new Inner();
private void foo() {
inner.foo();
}
private class Inner extends Super {
@Override
protected void foo() {
System.out.println("foo");
}
}
}
PS:我不认为它在任何方面都有用(我甚至不确定这是否有效)。首先@Ravinder Reddy的回答绝对正确,你不应该在不接受我的条款和条件的情况下使用我的例子,这些条款和条件基本上是这样规定的(“使用风险自负”) 我不能说它漂亮或有用,但我想你可以做如下事情:
public abstract class Master {}
public abstract class Super extends Master{
protected abstract void foo();
}
public class Sub extends Master {
private Inner inner = new Inner();
private void foo() {
inner.foo();
}
private class Inner extends Super {
@Override
protected void foo() {
System.out.println("foo");
}
}
}
PS:我不认为它在任何方面都有用(我甚至不确定这是否有效)。动机是什么?受保护的
有什么问题?抽象类有一个最终方法beFit(),它调用实现的抽象方法run()和feedBetter()。我希望那些方法在包中不可访问,而包必须受到保护
考虑到您的子类将无法看到它来覆盖它,如果它是私有的
提供原因,那么我们可能能够提供解决方案动机是什么?受保护的
有什么问题吗?抽象类在调用实现的抽象方法run()和feedBetter()的t()。我希望这些方法在包中不可访问,因为包必须受到保护
,考虑到您的子类将无法看到它来覆盖它,如果它是私有的
提供原因,那么我们可能能够提供解决方案