javaSE-关键字this-super
一、this关键字:
- “this(实际参数列表)”出现在构造方法第一行,通过当前的构造方法去调用本类当中其它的构造方法。其目的是为了代码复用。
- this不能使用在static的方法中
- this出现在实例方法中,谁调用这个实例方法,this就代表谁,this代表当前正在执行这个动作的对象。
- this可以看做一个变量,它是一个引用,存储在Java虚拟机"堆"内存的对象内部,this这个引用保存了当前对象的内存地址指向自身
- this大部分情况下可以省略,在方法中区分实例变量和局部变量的时候不能省略。
public class Date { private int year; private int month; private int day; //业务要求,默认创建的日期为1970年1月1日 public Date(){ this.year = 1970; this.month = 1; this.day = 1; } public Date(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; } }
二、关键字super:
- super不能出现在静态方法中。
- “super(实际参数列表);”语法表示调用父类的构造方法,代码复用性增强了,完成当前对象的父类型特征的初始化操作。
- super(实际参数列表) 这行代码和 “this(实际参数列表)” 都是只允许出现在构造方法第一行,所以这两行代码是无法共存的。
- super的使用:
- super.属性名 【访问父类的属性】
- super.方法名(实参) 【访问父类的方法】
- super(实参) 【调用父类的构造方法】
public class People { String idCard; String name; boolean sex;
//无参构造 public People(){ } //父类构造方法 public People(String idCard,String name,boolean sex){ this.idCard = idCard; this.name = name; this.sex = sex; } }
public class Student extends People{
//学号是子类特有的 int sno;
//无参数构造 public Student(){ } //子类构造方法使用super(实际参数列表) 实现代码复用 public Student(String idCard,String name,boolean sex,int sno){ super(idCard,name,sex); this.sno = sno; } }
//测试 public class StudentTest { public static void main(String[] args) { Student s = new Student("12345x","jack",true,100); System.out.println("身份证号" + s.idCard); System.out.println("姓名" + s.name); System.out.println("性别" + s.sex); System.out.println("学号" + s.sno); } } //输出结果: // 身份证:12345x //姓名:jack //性别:true //学号:100 //