今日之失,未必不为后日之得。
Java编程语言的『面向对象』已经深入人心。自然而然,构造器(构造函数)作为类和对象的桥梁,深刻地理解它的重要性不言而喻。
构造器是用来初始化对象的。
一般而言,我们都会将Class理解为蓝图(blueprint)亦或是模板。而对象则是Class概念下更加具体化的东西。
对于动物这个概念而言,我们可以将其作为Class类存在,那么具体的动物(老虎,大象,狮子.ie)就可以被看成对象。
这篇文章的重点在于构造器,所以关于Class(类) 和 对象(Object) 的关系就不详细展开啦。
我们都知道:
构造器是类的一部分,所有的类都必须有构造器。
但是我们在定义类的时候,却可以将此不置可否,视若无物。
1.谁给我们做这么大的勇气,WHY?
The compiler automatically provides a no-argument, default constructor for any class without constructors.
(编译器会为没有显式声明构造器的类自动提供一个无参的默认构造器)
一直以来,我们也都将此奉为『金科玉律』。
在编程界一直流传着:Talk is cheap ,show me the code,这句话一直萦绕在我的心头啊.
现在我们就来证明其真实的存在。
用事实说话
为了更好地证明,这里声明一个最简单的类:
public class Demo {
}
然后使用终端:
使用命令 javac Demo.java 进行编译,然后使用命令 Java -c Demo.class查看输出即可。
如下图所示,在编译后的字节码文件(.class文件)中,我们清楚地看到默认构造方法Demo()的存在
如果使用IDE开发,运行该类(别忘了写main()),然后找到相应的class文件直接查看,也可以得出此结论。
对于高阶的Java开发者而言,掌握Java字节码是必备技能。
这篇文章虽然简单,但是希望能起到抛砖引玉的效果。在学校我们接受的是教条式教育,如果我们踏入社会,希望我们可以自己去动手实践。
实践是检验正理的唯一标准
给大家推荐一篇讲解Java字节码的文章:Java字节码结构