栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java类如何没有no-arg构造函数?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java类如何没有no-arg构造函数?

如果所有对象都直接或间接继承自Object,那么如何引起编译器拒绝呢?

我认为基础是你的误解是,你 的是构造继承。实际上,构造函数不是在Java中继承的。因此,请考虑以下示例:

public class A {    public A(int i) { super(); ... }}public class B extends A {    public B() { super(); ... }}

课程

A

  • 没有继承任何构造函数
    Object
  • 没有明确声明一个无参数的构造函数(即
    public A() {...}
    ),并且
  • 没有默认的构造函数(因为它 确实 声明了另一个构造函数)。

因此,它只有一个构造函数:

public A(int)

super()
B
类中对的调用尝试在中使用不存在的无参数构造函数,
A
并给出编译错误。要解决此问题,您需要更改
B
构造函数以使用该
A(int)
构造函数,或者在中声明一个显式的无参数构造函数
A

(顺便说一句,构造函数没有必要像我一样 显式地 调用超类构造函数。但是许多人认为包括显式调用是一种好样式。如果省略它,则Java编译器插入对超类的no-
args构造函数的隐式调用…如果no-args构造函数不存在或对子类不可见,则会导致编译错误。)

这与构造函数是私有的有关吗?

不直接。但是,将构造函数声明为私有将阻止从子类调用该构造函数。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/507423.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号