JAVA 构造函数
构造函数在每次创建对象时自动调用构造函数可以重载。一个构造函数必须和所属的类同名必须没有任何返回值。构造函数虽然也是方法但是不能再非声明语句中显示调用!
构造函数的目的是对新创建的对象的数据成员进行初始化 。因此,根据参数的数量和类型,每次创建一个对象都会自动调用一个构造函数。如果没有编写任何构造函数,咋编译器将提供一个默认的构造函数,在这个构造函数中,所有的数值数据都初始化为0,所有的字符串数据成员都初始化为null。除了初始化的作用外,构造函数在调用的时候也可以实现一些其他的任务,并且可用多种方式编写。
import java.text.*;
public class Asd
{
private int month,day,year;
public void setAsd(int mm,int dd,int yy){
month=mm;
day=dd;
year=yy;
}
public void showAsd(){
DecimalFormat df=new DecimalFormat("00");
System.out.println("The date is "+df.format(month)+'/'+df.format(day)+'/'+df.format(year%100));
}
public static void main(String[] args){
Asd a=new Asd();
Asd b=new Asd();
b.setAsd(12,25,2002);
System.out.println();
a.showAsd();
b.showAsd();
}
}
小知识点:存取方法和增便方法
存取方法是用来访问对象的数据成员的非构造函数类成员方法。例如showAsd()方法就是一个存取方法。这些方法可以显示的似有数据的值。在构造一个类时,一定要提供一组完整的存取方法。存取方法并不返回数据成员的实际值,而是返回值的一种有用的表现形式。
增便方法是改变对象的数据成员值的非构造函数类方法。例如setAsd()。构造函数的主要目的是初始化对象的成员变量,不属于增便方法。
没有构造函数的这种情况就是很好的就是免了很多初始化的东西了啊!
import java.text.*;
public class Asd
{
private int month,day,year;
Asd(){
month=1;
day=2;
year=2001;
System.out.println(""+month+day+year);
}
public void setAsd(int mm,int dd,int yy){
month=mm;
day=dd;
year=yy;
}
public void showAsd(){
DecimalFormat df=new DecimalFormat("00");
System.out.println("The date is "+df.format(month)+'/'+df.format(day)+'/'+df.format(year%100));
}
public static void main(String[] args){
Asd a=new Asd();
Asd b=new Asd();
b.setAsd(12,25,2002);
System.out.println();
a.showAsd();
b.showAsd();
}
}
这个事自己写了构造函数里面也加进去了一些东西关键是看这里
System.out.println(""+month+day+year);//前面有""+
System.out.println(month+day+year);//前面没有""+
后面的一种输出的结构是 2004 他把这几个东西当做加法来做了运算 前面的这种情况就是没有当做加法来运算 这个是为什么啊???
System.out.println(month+day+""+year);//这种情况的话就是前面的月和日进行了加法运算后面的年份没有!???这个的规则是什么啊???