您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

为什么我需要在这里显式编写一个构造函数?

为什么我需要在这里显式编写一个构造函数?

1)为什么必须对V类完全使用构造函数?AFAIK不需要创建构造函数,因为JAVA编译器会自动创建认构造函数以继续其操作。同样从消息中,似乎还需要一个认的构造函数,但不是我编写的,但是正如我所说的,JAVA不会自动创建它吗?

仅当不存在其他构造函数时才创建认构造函数,当您创建该构造函数时,将Check(int i,int j)删除认构造函数

如果在构造函数中未包含对super的调用,则java会super()认尝试进行调用。但是,由于父类中没有认构造函数,因此无法执行此操作。

这种行为是好的,因为您可能不需要认的构造函数。某些变量可能 初始化才能使对象正常运行。因此,需要一种删除认构造函数方法,这是通过显式创建构造函数来完成的。

2)另一件事,我将子类中的代码更改为V(int i,int j){super.a = i; super.b = j}。,但是我仍然遇到错误。这是为什么?这个代码不是super.a = i; super.b = j与super(i,j)一样吗?另外,在V类中,我可能不需要使用b,那么为什么我需要通过构造函数对其进行初始化?

代码

V(int i, int j){ 
   super.a=i; super.b=j
}

仍然没有对父构造函数调用,因此变成

V(int i, int j){ 
   super();
   super.a=i; super.b=j
}

再一次,super()不存在

必须存在对super的一些调用才能“设置”对象的父部分,一直到Object(所有对象隐式扩展)。因此,您不能仅仅因为您在子构造函数中执行了等效的操作就忽略了父构造函数

其他 2022/1/1 18:35:47 有554人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶