构造器的引入
创建好一个类后,系统默认内置一个隐式的构造器。构造器和方法是两码事,各是各的。
构造器的作用
1. 创建对象。
2. 在创建对象的过程中,对这个类进行初始化操作,这些操作写在构造器的大括号中
2.1 初始化操作放到构造器中,由构造器自动完成,程序员就不必在创建对象后还想着对这对象做初始化操作。
构造器的组成
代码示例:构造器
有一个参数的构造器
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;
}
}
构造器相关语法规则
- Java语言中,每个类都至少有一个构造器
- 默认构造器的修饰符与所属类的修饰符一致
- 一旦显式定义了构造器,则系统不再提供默认构造器
- 一个类可以创建多个重载的构造器
- 父类的构造器不可被子类继承
快捷键:
ctrl + p:提示参数
alt + insert : 构造器生成快捷键
类的属性赋值的顺序
1. 系统根据这个属性的类型来设置默认值。
private int age;
2. 显示初始化
private int age = 6;
3. 构造器初始化
public Person(int age) {
this.age = age;
}
4. 调用方法或直接给属性赋值
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;
getter()、setter()方法:
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
规则描述如下:
- getXxx()或setXxx()方法取方法名字符串
- 去掉get或set(剩下Xxx)
- Xxx首字母小写
UML类图
IDEA中生成UML 右键
this关键字
含义:
- 类的方法中:代表调用当前方法的对象
2. 类的构造器中:代表当前构造器正在创建对象
this能干什么
1.调用属性
2.调用方法
3.this调用本类的构造器
4.this调用构造器的规则
- 在构造器中调用其他构造器,this()语句必须在第一行
- 各个构造器之间调用不能形成闭环
- 一个构造器中调用其他构造器的操作只能有一个
package关键字
用来声明当前类所在的包。package声明所在包的语句必须是在类的第一行。若缺省该语句,则指定为无名包。
import关键字
在JDK编译Java源程序的时候,并不能保证所有的类都能够被JDK默认识别到。JDK无法默认识别的类就需要我们通过import语句导入。
- 精确导入:在import关键字后面指定全类名
import java.util.Scanner;
- 全部导入:在import关键字后面指定包名.*
import java.util.*;
语法规则:
- 使用的位置:在package声明和类声明之间
- 如果导入的类或接口是java.lang包下的,或者是当前包下的,则可以省略此import语句。
- 如果导入一个类之后,又需要用到另一个同名的类,那么就需要使用全类名来引用
- 如果已经导入java.a包下的类。那么如果需要使用a包的子包下的类的话,仍然需要导入。
- import static组合的使用:静态导入。让当前类可以直接调用导入的类中的静态属性或方法,不必写类名了。