构造函数
特点:
1、函数名与类名相同
2、不用定义返回值类型
3、不可以写return语句
作用:
给对象进行初始化。
注意:
1、默认构造函数的特点。
2、多个构造函数是以重载的形式存在的。
对象一建立就会调用与之对应的构造函数。
构造函数的作用:可以用于给对象进行初始化。
当在堆内存中产生一个对象的时候需要一个初始化动作
对象为什么要进行初始化呢?
现实生活中的事物很多他只要一出现就具备了一些基本的特性:比如产生一个人,这人一出生他就会哭这个行为,这个行为就是他的初始化行为。
构造函数的小细节:
当一个类中没有定义构造函数时,那么系统会默认给该类加入一个空参数的构造函数。
当在类中自定义了构造函数后,默认的构造函数就没有了。
构造函数和一般函数在写法上有不同。
在运行上也有不同。
构造函数是在对象一建立就运行,给对象初始化。
而一般函数是对象调用才执行,是给对象添加对象具备的功能
一个对象建立,构造函数只运行一次。
而一般方法可以被该对象调用多次。
什么时候定义构造函数呢?
当分析事物时,该事物存在具备一些特性或者行为,那么将这些内容定义在构造函数中。
构造函数在定义过程中要分析是否需要未知内容参与运算,这些内容是什么数据类型,这一点与一般函数相同。
注意:如果把类中的所有构造函数都私有private,那么该类所有的对象都不能初始化成功,会报错。
class Person
{
// Person( ){ }//系统默认添加的构造函数,方便对象初始化,否则对象是建立不出来的。
Person( )
{
System.out.println("Person run");
}
private String name;
private int age;
构造代码块:
作用:给对象进行初始化。
对象一建立就运行,而且优先于构造函数执行。
构造代码块和构造函数的区别:
构造代码块是给所有对象进行统一初始化,定义不同对象共性初始化内容:比如每个孩子生出来都会哭。
而构造函数是给对应的对象初始化。
{
//System.out.println("person code run);
cry( );
}
Person( )
{
System.out.println("A: name="+name+",,age="+age);
cry( );
}
Person( String n)
{
System.out.println("B: name="+name+",,age="+age);
cry( );
}
Person( String n,int a)
{
name=n;
age=a;
System.out.println("C: name="+name+",,age="+age);
cry( );
}
public void getName()
{
return name;
}
public void setName(String n)
{
name=n;
}
public void cry( )
{
System.out.println("cry.......");
}
}
class PersonDemo
{
public static void main(String[ ] args)
{
Person p1=new Person( );
//打印结果:A:name=null,,age=0 cry.....
p1.cry( );
//打印结果:cry.....
Person p2=new Person( "lisi");
//打印结果:A:name=lisi,,age=0 cry......
System.out.println( p2.getName( ) );//打印结果:lisi
lisi认为这个名字太难听,想改名为libusi,但是我们不能这样写
// Person p2=new Person( "lisi");
因为这样写就又新建了一个对象叫libusi
应该这样写:
p2.setName(libusi);
System.out.println( p2.getName( ) );//打印结果:libusi
Person p1=new Person("wangwu",10 );
//打印结果:A:name=wangwu,,age=10 cry.....
}
} |