黑马程序员-构造函数和构造代码块

时间:2023-02-11 18:22:32
构造函数特点:
1.函数名和类名相同
2.不用定义返回值类型
(注意:void为一种返回值类型,注意区别)
3.不可以写return语句

作用:
给对象进行初始化,即对象一建立就调用与之对应的构造函数
(注意:用创建对象时的参数来区分具体调用哪个构造函数)

注意:
1、默认构造函数,当一个类中没有定义构造函数时,系统会默认给该类加入一个空参数的构造函数,如果自定                义了了构造函数,则系统不加默认的构造函数
2、多个构造函数是以重载(函数名相同,参数列表不一致)的形式存在的。


class Person
{
private String name;
private int age;
Person()
{
System.out.println("name="+name+";age="+age);
}
Person(String name)
{
this.name = name;//this关键字指代本类对象
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);
}
}
class PersonDemo
{
public static void main(String[] args)
{
Person p1 = new Person();
Person p2 = new Person("lisi");
Person p3 = new Person("wangwu",1);

}
}

输出结果:

name=null;age=0
name=lisi;age=0
name=wangwu;age=1

用以下程序证明有了构造函数后,系统默认的构造函数不存在

lass Person
{
private String name;
private int age;
Person(String name)
{
this.name = name;//this关键字指代本类对象
System.out.println("name="+name+";age="+age);
}
}
class PersonDemo
{
public static void main(String[] args)
{
Person p1 = new Person();
}
}

编译后提示如下:

错误: 无法将类 Person中的构造器 Person应用到给定类型;


构造代码块:


<pre name="code" class="java">class Person
{
private String name;
private int age;
//构造代码块
{
System.out.println("Person run");
}
Person(String name,int age)//构造函数
{
this.name = name;
this.age = age;
System.out.println("name="+name+";age="+age);
}
}
class PersonDemo
{
public static void main(String[] args)
{
Person p3 = new Person("wangwu",1);

}
}


 

作用:在创建对象给时就执行,而且优先于构造函数执行,是给所有对象进行统一初始化

小结:

1、构造函数和一般方法的区别

      构造函数:在对象一建立就运行,给对象初始化,一个对象建立,构造函数只运行一次
      一般方法:通过对象调用才执行,是给对象添加对象具备的功能,构造函数可以被对象多次调用

2、构造函数的应用:当创建对象时,该对象就具备一些特性和特有方法,

     则将这些特性属性和特有方法定义在构造函数中

3、构造函数和构造代码块的区别:

             构造函数:给对应的对象进行初始化
   
         构造代码块:给不同对象初始化共性的内容  
4、构造函数为类中成员,所以可以被private修饰