开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第5天,点击查看活动详情
什么是构造器
构造器通常也叫构造方法、构造函数,构造器在每个项目中几乎无处不在。当你new一个对象时,就会调用构造器。构造器格式如下:
修饰符,比如public 类名 (参数列表,可以没有参数){ //这里不能有return}
Java构造器
创建好一个类后,系统默认内置一个隐式的构造器。构造器和方法是两码事,各是各的
构造器的注意事项:
1,构造器的名称必须和类名一致
2,一个类中可以定义多个构造器,但是构造器的参数列表必须不同(重载)
3,如果我们没有手动定义构造器,则Java系统会提供一个默认的构造器给我们使用,一旦我们定义了构造器,则系统会把 默认的构造器收回
4,构造器的作用:实例化对象,给对象赋初始值
5,代码游离块优先执行
怎么定义构造器
构造方法的名字必须和所在类的名字一致,没有返回值,但不能声明void,访问权限可以为任意,但是一般情况下使用public方法权限,构造方法中的参数可以根据需要自行定义,参数的不同的构造方法构成重载
public 构造方法名(参数){ ... }
class Fu {
public Fu(){} //无参的公有构造方法
public Fu(int i){} //参数类型为int的公有构造方法
......
}
public class Demo extends Fu {
public Demo(){} //无参的公有构造方法
public Demo(int i){} //参数类型为int的公有构造方法
public Demo(int i,double d){} //参数类型为int和double的公有构造方法
...
}
构造器的作用
-
创建对象。
-
在创建对象的过程中,对这个类进行初始化操作,这些操作写在构造器的大括号中
2.1 初始化操作放到构造器中,由构造器自动完成,程序员就不必在创建对象后还想着对这对象做初始化操作。
构造器的组成
构造器相关语法规则
- Java语言中,每个类都至少有一个构造器
- 默认构造器的修饰符与所属类的修饰符一致
- 一旦显式定义了构造器,则系统不再提供默认构造器
- 一个类可以创建多个重载的构造器
- 父类的构造器不可被子类继承
有一个参数的构造器
public class Soldier {
private String soldierName;
public Soldier(String soldierName) {
this.soldierName = soldierName;
}
}
注意:当类中声明有参构造器后,系统将不再给这个类分配无参构造器。
构造器重载
一个类有多个构造器时:要么参数个数不同;要么参数类型不同
public class Soldier {
private int age;
private String soldierName;
private String weapon;
private String gender;
public Soldier() {
}
public Soldier(int age) {
this.age = age;
}
public Soldier(String soldierName) {
this.soldierName = soldierName;
}
public Soldier(String soldierName, String weapon) {
this.soldierName = soldierName;
this.weapon = weapon;
}
public Soldier(String soldierName, String weapon, String gender) {
this.soldierName = soldierName;
this.weapon = weapon;
this.gender = gender;
}
public Soldier(int age, String soldierName, String weapon, String gender) {
this.gender = gender;
this.weapon = weapon;
this.soldierName = soldierName;
this.age = age;
}
}
类的属性赋值的顺序
- 系统根据这个属性的类型来设置默认值。
private int age;
- 显示初始化
private int age = 6;
- 构造器初始化
public Person(int age) {
this.age = age;
}
- 调用方法或直接给属性赋值
person.setAge(5);
person.age = 18;
JavaBean类(扩展知识)
JavaBean是一种Java语言写成的可重用组件。
所谓JavaBean是指符合如下标准的Java类:
类是公共的
有一个无参的公共的构造器
有属性,且有对应的 get 、set 方法
用户可以使用JavaBean将功能、处理、值、数据库访问和其它任何可以用Java代码创造的的对象进行打包,并且其他的开发者可以同通过内部的JSP页面、Servlet、其它JavaBean、applet程序或者应用来使用这些对象。用户可以为JavaBean提供一种随时随地的复制和粘贴功能而不用关心任何改变。
JavaBean
用来描述现 实世界中的具体数据:Book、Employee、Department、Product、……
也有其他名称:domain(领域模型)、POJO(Plain old Java Object普通的传统的Java对象)、entity(实体类)
功能性组件:用来执行具体代码逻辑对应的操作
BookServlet
BookService
BookDao
工具类:通常用来把某个特定操作封装到工具方法中。工具类通常是用类名来直接调用方法。
Aarrys.sort()
JavaBean的要求
必须有的组成部分:
私有的属性
针对私有属性设置的公共的getter()、setter()方法
无参构造器
getter()和setter()方法的规则
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
规则描述如下:
- getXxx()或setXxx()方法取方法名字符串
- 去掉get或set(剩下Xxx)
- Xxx首字母小写
this关键字
- 类的方法中:代表调用当前方法的对象
- 类的构造器中:代表当前构造器正在创建对象
this能干什么
1.调用属性
2.调用方法
3.this调用本类的构造器
4.this调用构造器的规则
- 在构造器中调用其他构造器,this()语句必须在第一行
- 各个构造器之间调用不能形成闭环
- 一个构造器中调用其他构造器的操作只能有一个