黑马程序员技术交流社区
标题: 基础实验班,面向对象细节部分(2) [打印本页]
作者: happyli52 时间: 2016-1-7 22:18
标题: 基础实验班,面向对象细节部分(2)
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
作者: ╋☆Love↘七 时间: 2016-1-7 22:21
不错不错
作者: justinwww 时间: 2016-1-7 22:26
总结的可以!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |