如何限制Abstract类的实现类将方法的范围从protected修改为public?
例如:假设我有一个抽象类
package com.rao.test;
public abstract class AbstractTEClass {
protected abstract void function1();
protected abstract void function2();
protected void doWork() //I want to call the abstract methods from this method.
{
function1(); //implementation classes will give implementation of these methods
function2();
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我有一个实现类,它扩展了上面的抽象类
package com.rao.test;
public class AbstractTEClassImpl extends AbstractTEClass {
@Override
public void function1() {
// TODO Auto-generated method stub
System.out.println("FUnction1");
}
@Override
public void function2() {
// TODO Auto-generated method stub
System.out.println("Function2");
}
public static void main(String[] …Run Code Online (Sandbox Code Playgroud) 以下程序失败:
abstract class A {
protected void method() {}
}
class B extends A {
private void method() {}
}
public class main{
public static void main(String []args) {}
}
Run Code Online (Sandbox Code Playgroud)
有:
main.java:6: error: method() in B cannot override method() in A
private void method() {}
^
attempting to assign weaker access privileges; was protected
1 error
Run Code Online (Sandbox Code Playgroud)
将派生方法设置为protected/private.
问题:Java不允许您进一步限制子类中的访问权限的原因是什么?我将此与C++形成对比,C++具有完全相反的规则.