java声明公共构造函数_java – 有一个抽象类的公共构造函数有很好的理由

答案是一样的java:

THere’s no reason for a public constructor for an abstract class. I’d assume that the reason that the compiler doesn’t complain is as simple that they just didn’t spend time covering that since it really doesn’t matter if it’s public or protected. (07000)

你不能从除直接子类之外的任何东西调用抽象类的构造函数。

因此,对抽象类的构造函数的访问修饰符添加特殊规则不会对语言添加有用的东西。

有一件事看起来像这个规则的异常 – 如果抽象类只定义了一个默认的构造函数,那么子类不必实现一个构造函数:这是合法的:

public abstract class A {

public A() {}

}

public class B extends A {}

所以我们可以通过调用新的B()创建一个B – 但是注意,我们仍然创建一个B而不是一个A.再次,如果A中的构造函数是public或protected也没关系。它只是不应该是私有的,但编译器会注意到并抱怨…

实际上,我们调用一个“隐形”公共默认构造函数在B上做一个简单的super()调用…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值