SO中文参考
首页
(current)
程序语言
c
java
python
c++
go
javascript
swift
c#
操作系统
linux
ubuntu
centos
unix
数据库
oracle
mysql
mongodb
postgresql
框架
node.js
angular
react-native
avalon
django
twisted
hadoop
.net
移动开发
android
ios
搜索
关于Java中不同类中构造函数的一些基础问题[已关闭]
问题描述
投票:0
回答:3
关于不同类中构造函数的一些基本问题:
我什么时候应该在类中添加空构造函数?
什么时候应该在抽象类中添加构造函数?
我什么时候应该在扩展类中添加“超级”构造函数?
java
constructor
3个回答
1
投票
空构造函数会自动生成,但前提是类没有带参数的构造函数。所以,如果你有一个带参数的构造函数,并且你想有一个空的构造函数,你必须自己写一个。
最常见的情况是抽象类中有一些私有/受保护的字段。 例如,如果抽象类 Person 有字段 name、surname,它应该有初始化这 2 个字段的构造函数。如果 Student 类扩展了 Person 类,它应该调用 Person 构造函数。
自动调用父类默认构造函数(不带参数)。如果你想带参数调用父构造函数,请使用 super。
0
投票
空构造函数隐式存在。但是,如果您添加了其他构造函数并且仍然需要默认构造函数,请显式添加它。其他原因是如果您想控制构造函数访问修饰符。隐式默认构造函数是公共的。
构造函数创建对象。如果您想创建保存某种状态的即用对象,您通常必须编写构造函数代码。在这种情况下,类是否抽象并不重要。
我相信你的意思是当你必须从子类显式调用超类的构造函数时。除非您不想调用超类的默认构造函数,否则您必须这样做。我建议始终显式调用超类的构造函数。这样的代码对于将来的修改来说更安全。
0
投票
如果需要显式默认构造函数,则隐式默认构造函数不可用。
该类还有子类。
调用超类的非默认构造函数。
最新问题
带有 SQL Server 数据库的 ASP.NET MVC 项目
保留泛型类型以供以后重用
Javascript 无法在部分视图中工作
如何更新README中的文件列表
std::to_string() 与 static_cast<std::string>() 有何不同?
ER_NOT_SUPPORTED_AUTH_MODE:客户端不支持服务器请求的身份验证协议
Flutter 应用程序无法与谷歌地图一起使用
Azure 弹性代理作业问题。新数据库已添加到弹性池中,针对该池的作业无法针对新数据库执行
ASP.NET Core 8.0 MVC:如果 ModelState 无效且表单重新加载,临时存储照片的最佳位置在哪里?
Stack 尝试查找 libgmp 然后失败,即使根本没有依赖项
ReactNative:将 Expo 升级到 52 后启动时应用程序崩溃
FFMPEG 比率和 SAR 为 1
如何在Java中使用PreparedStatement更新MySQL时间戳列?
如何使用 Python 和 Flask 优化我的电子商务网站的 API 响应时间?
Durable Functions + Azure 存储帐户 -> 多次重试尝试检索资源“https://storage.azure.com/”的身份验证令牌
spring.cloud.stream.output-bindings 它的实际目的或用途是什么?
.htaccess mod_rewrite 在子目录中不起作用
QML 中的动态可缩放矢量图像
MVC - ASP.NET Core 8.0 - 如果 ModelState 无效并且表单重新加载,临时存储照片的最佳位置在哪里?
如何在pydantic v2中获取模型字段类型?
© www.soinside.com 2019 - 2024. All rights reserved.