相关疑难解决方法(0)

喜欢构成而不是继承?

为什么喜欢构图而不是继承呢?每种方法都有哪些权衡取舍?什么时候应该选择继承而不是作文?

language-agnostic oop inheritance composition aggregation

1538
推荐指数
23
解决办法
29万
查看次数

为什么不能降低Java子类中方法的可见性?

当您在子类中重写方法时降低方法的可见性时,为什么编译器会给出错误消息?

java polymorphism overriding subclassing

42
推荐指数
2
解决办法
1万
查看次数

与C++相比,为什么在覆盖时不能缩小方法可见性?

以下程序失败:

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++具有完全相反的规则.

java oop inheritance

3
推荐指数
2
解决办法
171
查看次数