[构造函数]构造函数是如何产生的?

简介: [构造函数]构造函数是如何产生的?

在学习构造函数时有两个问题困扰了我:

   1、一个类没有显式的写上一个构造方法,构造方法是如何产生的?

   2、如果一个类已经显式的写上一个构造方法时,还会产生无参的构造方法吗?

   

  于是用代码验证一下:

验证问题1:

class Baby{
   int id; //身份证
   String name;  //名字
}
class Demo6
{
   public static void main(String[] args)
   { 
}
}

将这段代码反编译:

Javap –c –l –private



验证结果:

20170211110347612.png


   结论1:如果一个类没有显式的写上一个构造方法时,那么java编译器会为该类添加一个无参的构造函数的,而不是JVM。



验证问题二:

新建一个带参数的Baby构造方法:

class Baby{
  int id; //身份证
  String  name;  //名字
public Baby(int i,String n)
{}
}


反编译后:



20170211110457395.png


 结论2:如果一个类已经显式的写上一个构造方法,那么java编译器不会再为该类添加一个无参的构造方法。

扩展:

构造函数是在编译器编译时产生的,那么构造函数和普通函数的区别是什么?

1. 返回值类型的区别:

1. 构造函数没有返回值类型


2. 普通函数有返回值类型,即使函数没有返回值,返回值类型也要写上void。


2. 函数名的区别:


1. 构造函数的函数名必须要与类名一致,


2. 普通函数的函数名只要符合标识符的命名规则即可。


3. 调用方式的区别:


1. 构造函数是 在创建对象的时候由jvm调用的。


2. 普通函数是由我们使用对象调用的,一个对象可以对象多次普通 的函数,


4. 作用上的区别:


1. 构造函数 的作用用于初始化一个对象。


2. 普通函数是用于描述一类事物的公共行为的。


 

 总结:

   这次虽然总结的是两个知识点,但是在总结方式上有了进步:用代码验证自己怀疑的结论!希望大家都能勇敢的迈出一步。


相关文章
|
Linux C语言
RISC-V Linux汇编启动过程分析
RISC-V Linux汇编启动过程分析
|
12月前
|
数据采集 人工智能 弹性计算
从零到英雄:利用百炼平台打造高效情感分析智能体的全攻略
百炼平台是阿里巴巴推出的面向开发者的AI模型训练和推理平台,提供丰富工具和服务,支持从需求分析到部署上线的全流程。本文以构建情感分析系统为例,详细介绍如何利用百炼平台完成数据准备、模型选择与训练、评估调优及最终部署。
1187 1
|
机器学习/深度学习 人工智能 Rust
如何在AI中使用Rust
【9月更文挑战第4天】Rust 以其高性能、安全性和并发性在人工智能领域崭露头角。尽管 Python 和 R 仍为主流,Rust 的库生态系统及其独特特性使其成为需要高性能和内存安全的 AI 项目的理想选择。本文探讨 Rust 在 AI 中的应用,包括关键库(如 Candle、Linfa)和用例,并提供了一个简单的文档聚类项目示例。Rust 能够构建高效且安全的 AI 应用,是追求高性能和可靠性的开发者们的有力工具。
638 12
|
10月前
|
存储 缓存 Java
程序员必懂!上下文切换到底是怎么回事?
大家好,我是小米,一个喜欢分享技术的程序员。今天聊聊社招面试中的高频考点——上下文切换。它指CPU在多个任务间切换时保存和恢复状态的过程,常见于进程、线程切换及中断处理。上下文切换有CPU时间开销、缓存失效、内存开销等代价。优化方法包括减少线程数量、选择合适的并发模型、优化锁使用等。理解这些不仅能提升面试表现,还能写出更高效的代码。欢迎关注我的微信公众号“软件求生”,获取更多技术干货!
332 6
|
算法 安全 数据安全/隐私保护
实战案例2:简单的文件加密解密程序。
实战案例2:简单的文件加密解密程序。
|
11月前
|
机器学习/深度学习 传感器 人工智能
《智驱新材变革:人工智能赋能新材料柔性制造新时代》
在当今制造业快速变革的背景下,柔性制造与新材料产业成为行业发展的关键。借助人工智能技术,新材料生产正迈向更加灵活、高效、智能的方向。AI通过深度数据分析,优化生产规划与调度,精准预测市场需求,动态调整生产计划;实时监测和自适应控制工艺参数,确保产品质量稳定;利用机器视觉等技术实现智能质量检测,提前预防缺陷;构建人机协作的智能制造生态系统,充分发挥人和机器的优势。这不仅提高了生产效率和资源利用率,还为全球制造业的转型升级注入了强大动力,开创了新材料生产的新时代。
348 5
|
开发框架 NoSQL 关系型数据库
基于SqlSugar的开发框架循序渐进介绍(27)-- 基于MongoDB的数据库操作整合
基于SqlSugar的开发框架循序渐进介绍(27)-- 基于MongoDB的数据库操作整合
|
机器学习/深度学习 人工智能 搜索推荐
基于大模型思维链(Chain-of-Thought)技术的定制化思维链提示和定向刺激提示的心理咨询场景定向ai智能应用
基于大模型思维链(Chain-of-Thought)技术的定制化思维链提示和定向刺激提示的心理咨询场景定向ai智能应用
|
缓存 负载均衡 关系型数据库
Pgpool-II实现高可用+读写分离+负载均衡(三)---- 日常使用篇
Pgpool-II是一款工作在PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件。提供了连接池、复制、负载均衡、限制过多连接、看门狗、查询缓存等功能。本系列的前两篇讲解了Pgpool-II的安装及配置,本篇介绍日常使用。
解决Office 365套件一直提示“缓存凭据已到期,无法上载或下载你的更改”问题
解决Office 365套件一直提示“缓存凭据已到期,无法上载或下载你的更改”问题
解决Office 365套件一直提示“缓存凭据已到期,无法上载或下载你的更改”问题
下一篇
开通oss服务