6). 构造函数 (1). 构造函数的特点: [1]. 函数名和类名相同 [2]. 没有返回值类型 (根本没有return语句) [3]. 没有返回值类型和void的区别 {1}.void 是一种返回值类型。代表没有具体结果 {2}.无返回类型:根本不需要返回类型 [4]. 构造函数只能用来跟在new之后初始化对象,而不能像普通方法那样被调用!!!! (2). 构造函数被调用的时机 对象一建立,就会调用与之对应的构造函数。 (3). 构造函数的作用 给对象进行初始化 (也就是为对象的某些属性进行赋值使得对象一产生就具备某些特征) (4). 构造函数的小细节 [1]. 一个类中没有显式定义构造函数的时候,OS就会给该类加入一个空参的构造函数。 [2]. 如果一个类显式定义了一个构造函数,那么OS便不会给这个类在自动加入一个空参数的构造函数了。 (5). 构造函数和普通函数的区别 [1]. 写法上不同 [2]. 运行上不同 {1}构造函数在对象一建立的时候,就来给对象进行初始化的。 {2}只有对象调用才执行 【【再次强调!!!构造函数只能用来跟在new之后初始化对象,而不能像普通方法那样被调用!!!!】】 [3]. 执行的次数 {1}构造函数用来给对象进行初始化,所以仅仅运行一次; {2}普通的方法可以被对象多次调用,可以执行多次 (6). 何时定义构造函数 当事物一存在的时候,就具备某些特性或行为的时候,就为这个类定义构造函数,将这些对象与生俱来的特性和行为封装到构造函数中去进行初始化 7). 构造代码块很多时候,函数和代码块是相对应的。方法有自己的名字,而代码块却没有。 (1). 构造代码块的写法与目的: [1]. 构造代码块的写法:用一对{}封装起来一段代码,并把这个代码块放在类的成员的位置上。这样的代码块就是构造代码块。 [2]. 构造代码块,顾名思义,也是起到构造方法的作用的代码块,也是给对象进行初始化。 (2). 构造代码块和构造函数的区别 [1]. 初始化对象的方面不同: {1}.构造代码块是对这个类所有的对象进行进行共性的初始化。 {2}.构造函数可以指定。所以构造函数是对指定对象进行个性的初始化 [2]. 执行的顺序不同:构造代码块先于构造函数执行。 举例说明:(面试题) class Person{ private String name; private intage; //构造代码块 { name ="Benjamin"; age = 18; System.out.println("Person code run...."); } Person(){ System.out.println("name ="+ name+", age ="+age); } Person(String name, int age){ this.name =name; this.age =age; System.out.println("name ="+ name+", age ="+age); } } public class testtt { public staticvoidmain(String[] args) { Person p1 =new Person();//调用空参数构造函数进行初始化 Person p2 =new Person("zxm", 28);//调用非参数构造函数进行初始化 /* * 两个Person对象,分别指定用不同的构造函数进行初始化。个性的初始化 * 但是,在每一个构造函数运行之前,构造代码块都对这两个对象进行统一的共性初始化 */ } } 运行结果: Person code run.... name = Benjamin, age = 18 Person code run.... name = zxm , age = 28
|