---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
构造函数
特点:①函数名与类名相同②不用定义返回值类型③不可以写return语句
作用:给对象进行初始化
注意:①默认构造函数的特点②多个构造函数是以重载的形式存在的
*对象一建立就会调用与之对应的构造函数。
*现实生活中的对象,一出现就会具有一些基本特性,这些特性就需要初始化。
*当一个类中没有定义构造函数时,系统会默认给该类加入一个空参数的构造函数。
*当在类中自定义了一个构造函数以后,不管有没有参数,默认的构造函数就没有了。
*一个类中可以有多个构造函数,构造函数也是函数,可以重载。
*构造函数和一般方法在写法上有不同
*构造函数和一般方法在运行上有不同:
构造函数是在对象一建立就运行,给对象初始化
一般方法是对象调用才执行,是给对象具备的功能
构造函数只在定义对象时运行一次
一般方法对象可以调用多次
什么时候定义构造函数:分析事物时,该事物一出现就具备一些特性或行为,就要定义构造函数
构造代码块
作用:给对象进行初始化,对象一建立就运行,优先于构造函数执行
和构造函数的区别:
构造代码块是给所有对象进行统一初始化
构造函数是给对应的对象进行初始化
*构造函数是可以私有化的,私有化之后,不能创建对应的对象,如果一个类中所有的构造函数都私有化,这个类不能创建对象。
class Person
{
private String name;
private int age;
{
cry();
}
Person()
{
System.out.println("A: name="+name+"; age="+age);
}
Person(String n)
{
name = n;
System.out.println("A: name="+name+"; age="+age);
}
Person(String n,int a)
{
name = n;
age = a;
System.out.println("A: name="+name+"; age="+age);
}
public void cry()
{
System.out.println("crying!!!");
}
}
class PersonDemo
{
public static void main(String[] args)
{
Person p1 = new Person();
Person p2 = new Person("lisi");
Person p3 = new Person("wangwu",10);
p1.cry();
}
}
![]()

ps:每创建一个对象,先执行构造代码块,p1没有给name和age赋初值,所以都是默认值(String默认值为null,int默认值为0),若是注释掉Person(){...},编译时会报错,p1找不到对应的构造函数。
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
|