1,java的构造方法
1)什么是构造方法?
名字和类名完全一样,没有返回值(可理解为返回一个对象),
用new来调,调用的结果是在堆内存中创建一个对象空间且返回它的堆内存首地址
public class MyDate_1 {
private int year;
private int month;
private int day;
//空参构造
public MyDate_1(){
}
//带参构造
public MyDate_1(int year, int month, int day) {
super();
this.year = year;
this.month = month;
this.day = day;
}
//拷贝构造
public MyDate_1(MyDate_1 my){
this.year = my.year;
this.month = my.month;
this.day = my.day;
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public int getMonth() {
return month;
}
public void setMonth(int month) {
this.month = month;
}
public int getDay() {
return day;
}
public void setDay(int day) {
this.day = day;
}
@Override
public String toString() {
return "MyDate_1 [year=" + year + ", month=" + month + ", day=" + day + "]";
}
}
public class TestMyDate_1 {
public static void main(String[] args) {
//调用空参构造
MyDate_1 my1 = new MyDate_1();
System.out.println(my1);
//调用带参构造
MyDate_1 my2 = new MyDate_1(2017,10,1);
System.out.println(my2);
//调用拷贝构造
MyDate_1 my3 = new MyDate_1(my2);
System.out.println(my3);
/**
* 打印结果:
* MyDate_1 [year=0, month=0, day=0]
* MyDate_1 [year=2017, month=10, day=1]
* MyDate_1 [year=2017, month=10, day=1]
*/
}
}
2)构造方法的特点
如果我们没有手动写构造方法,则Java会自动帮我们添加一个默认构造方法(空参的构造方法)。如果我们手动写了构造方法,则Java不会帮我们添加默认构造方法(空参的构造方法),如果我们需要就手动再添加
3)在构造方法中调用构造方法
这个需要使用this()
public MyDate(MyDate d) {
//在构造方法中调用构造方法,
//用this(...), 且该方法只能在构造方法中调用,
//功能是给内存中的数据赋值
this(d.year,d.month,d.year);
}
2,java中的权限问题
权限从低到高(4种):
1)private: 只有当前类能够访问
2)缺省(默认): 只有当前包中的所有类(包含当前类)能访问
3)protected: 当前包中的类能够访问,其它包中若是子类也能访问。其它包中不是当前类的子类则不能访问。
4)public: 任意类(无论是否是相同的包或子类关系)都能访问