1.this关键字:简单来说this关键字可以理解为对象的一个属性,但是这个属性不是显示的,而是隐藏的,本质就是一个成员变量在一个方法中即当前对象的意思
所以我们就以this关键字为引做一道简单例题:
需求分析:
定义一个日期MyDate类。
属性:
day:日
month:月
year:年
构造方法:
包含year、month、day三个参数的构造方法
成员方法:
get/set方法
void showDate方法:打印日期。“日期:xxx年xx月xx日”
boolean isLeapYear()方法:判断当前日期是否是闰年(闰年为可以被4整除但不能被100整除或者可以被400整除)
定义测试类:创建MyDate对象,并测试。
MyData类如下:
public class MyData {
private int year;
private int month;
private int day;
public MyData(){
}
@Override
public String toString() {
return "MyData{" +
"year=" + year +
", month=" + month +
", day=" + day +
'}';
}
public MyData(int year, int month, int day) {
this.year = year;
this.month = month;
this.day = 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;
}
public void showDate(){
System.out.println("日期:"+year+"年"+month+"月"+day+"日");
}
//判断闰年
public boolean isLeapYear(){
return (year%4==0&&year%100!=0)||(year%400==0);
}
}
测试类如下:
package oop_this.data;
import org.junit.Test;
public class TestMydata {
@Test
public void test2(){
MyData md = new MyData();
md.setYear(1993);
md.setMonth(5);
md.setDay(16);
md.showDate();
System.out.println(md.getYear()+"年是闰年吗?"+md.isLeapYear());
}
}
运行结果如下:
总结:要注意以下几点
1.只能在构造器中使用this(参数列表);即在一个构造器中访问本类的另外一个构造器。(默认构造器行首是super())。
2.显示使用this()时,默认的super()就被覆盖
3.this(参数列表)和super(参数列表)在构造器中有且只能存在一个。
若在构造器中使用this(参数列表),则此语句只能位于构造器第一行
关于this关键字的使用和理解需要读者多去实践才能加深理解,如果本文可以给你带来帮助的话,可以关注博主,下一期我们将用继承和重写的案例来为读者讲解该如何去使用他们。