类的定义:
一般有三类常见的成员:
- 属性 field
属性(也叫成员变量)用于定义类或类对象包含的数据或静态特征;
- 方法 method
方法,刻画动态信息。类似面向过程中的函数;
- 构造器 constructor
构造方法,也是方法,但是有特性。是和名字和类名一样的方法。
属性会在刚建好类的时候给一个默认值:
- 数值型的都是零,只是分整型和浮点,分别是:
0
、0.0
; - 字符型的是字符里的 0:
\u0000
; - 布尔型默认是否定:
false
; - 引用类型默认无指向:
null
。
构造器的特点:
1 通过new
调用;
2 构造器虽然有返回值,但是定义的时候不能写返回值,默认就返回了本类(类型 + return this
,理论上这样但其实编译器帮你做了)不能在构造器里写 return 返回某个值;
3 如果没有定义,系统会自动添加无参的构造方法
,如果已定义,系统不会自动添加;
4 构造器的名字
必须和 类名
保持一致。
一个方法实现的时候对应一个栈帧,在堆里开辟一块新的空间,被初始化、被赋值,被所有线程共享。栈帧在语句实现结束就被释放掉了。而堆不会。方法区是一种规范,具体的实现依据 Java 的版本不同而有细微差异。
构造器的重载:
如果不加,系统会默认帮我们加一个的。
要想加参,必须手动去加参数,这样构造的时候,也就是我们在 main
里去new
这个对象,就可以直接这样来赋值,而不用多次去调属性赋值。
需要注意的是,有时候我们加了一个有参的构造器,但是在其他地方又会需要这个类有无参的构造器。 但此时,如果这个类没有一个无参的构造器,会报错,因为我们建的有参构造器,阻碍了IDEA帮我们去补一个无参构造器。 所以,一般我们加有参构造器时,可以顺手添加一个无参构造器。
Show u the code: 有参构造器的好处,可以让对象的实例化更方便: