对象的构造和初始化 ■说明了一个引用后,要调用new为新对象分配 间,也就是要调用构造函数 在Java中,使用构造函数( constructor,也称为构造方 法)是生成实例对象的唯一方法。在调用new时,既可 以带有变量,也可以不带变量,这要视具体的构造方 法而定 ■调用构造方法时步骤如下: 1)分配新对象的空间,并进行缺省的初始化。在Java 中,这两步是不可分的,从而可确保不会有没有初值 的对象 (2)执行显式的成员初始化 (3)执行构造方法,构造方法是一个特殊的方法
对象的构造和初始化 ▪ 说明了一个引用后,要调用new为新对象分配空 间,也就是要调用构造函数 ▪ 在Java中,使用构造函数(constructor,也称为构造方 法)是生成实例对象的唯一方法。在调用new时,既可 以带有变量,也可以不带变量,这要视具体的构造方 法而定 ▪ 调用构造方法时步骤如下: (1) 分配新对象的空间,并进行缺省的初始化。在Java 中,这两步是不可分的,从而可确保不会有没有初值 的对象 (2) 执行显式的成员初始化 (3) 执行构造方法,构造方法是一个特殊的方法
显式成员初始化 在成员说明中写有简单的赋值表达式,就 可以在构造对象时进行显式的成员初始化 public class Initialized i private int x=5: private String name="Fred"; private Date created =new Date;
显式成员初始化 ▪ 在成员说明中写有简单的赋值表达式,就 可以在构造对象时进行显式的成员初始化 public class Initialized { private int x = 5; private String name = "Fred"; private Date created = new Date(); ... }
构造方法 构 public class Xyz i 功 能 ∥成员变量 public Xyz{/参数表为空的构造方法 ∥创建对象 有 重 public Xyz(inti){带一个参数的构造方法 ∥使用参数创建对象 构造 在创建Xyz的实例时,可以使用两种形式: Xyz Xyz=new Xyz Xyz Xyz=new Xyz(5)
构造方法 ▪ 构造方法是特殊的类方法,有着特殊的功 能。它的名字与类名相同,没有返回值, 在创建对象实例时由new运算符自动调用 ▪ 为了创建实例的方便,一个类可以有多个具有 不同参数列表的构造方法,即构造方法可以重 载 ▪ 构造方法不能说明为native,abstract, synchronized或final,也不能从父类继承构造 方法 public class Xyz { // 成员变量 int x; public Xyz() {//参数表为空的构造方法 // 创建对象 x = 0; } public Xyz(int i) {//带一个参数的构造方法 // 使用参数创建对象 x = i; } } 在创建Xyz的实例时,可以使用两种形式: Xyz Xyz1 = new Xyz(); Xyz Xyz2 = new Xyz(5);
构造方法的特性 构造方法的名字与类名相同 ■没有返回值类型 必须为所有的变量赋初值 通常要说明为 public类型的,即公有的 可以按需包含所需的参数列表
构造方法的特性 ▪ 构造方法的名字与类名相同 ▪ 没有返回值类型 ▪ 必须为所有的变量赋初值 ▪ 通常要说明为public类型的,即公有的 ▪ 可以按需包含所需的参数列表
缺省的构造方法 每个类都必须至少有一个构造方法。如果 程序员没有为类定义构造方法,系统会自 动为该类生成一个缺省的构造方法 缺省构造方法的参数列表及方法体均为空,所 生成的对象的属性值也为零或空。如果程序员 定义了一个或多个构造方法,则将自动屏蔽掉 缺省的构造方法。构造方法不能继承
缺省的构造方法 ▪ 每个类都必须至少有一个构造方法。如果 程序员没有为类定义构造方法,系统会自 动为该类生成一个缺省的构造方法 ▪ 缺省构造方法的参数列表及方法体均为空,所 生成的对象的属性值也为零或空。如果程序员 定义了一个或多个构造方法,则将自动屏蔽掉 缺省的构造方法。构造方法不能继承