this关键字:
1、this关键字,本类对象的引用
this是在方法中使用的,哪个对象调用了该方法,那么,this就代表调用该方法的对象引用。
2、在成员变量名前面加上this.来区别成员变量和局部变量
在图中的代码块中,成员变量 age 和方法中传入的形参(局部变量)同名,在赋值的时候为了加以区分,我们可以通过加this关键字来区分,this. 可以调用类的成员变量和方法。
class Person {
private int age;
private String name;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void speak() {
System.out.println("name=" + this.name + ",age=" + this.age);
}
// 判断是否为同龄人
public boolean equalsAge(Person p) {
// 使用当前调用该equalsAge方法对象的age和传递进来p的age进行比较
// 由于无法确定具体是哪一个对象调用equalsAge方法,这里就可以使用this来代替
if(this.age == p.age)
//{ return true; } return false;
return this.age == p.age;
}
}
3、通过 this关键字来调用本类的其他构造函数
格式如下:
在上图中,带两个参数的构造函数入栈后,执行:this(nm)语句时,由于括号中带有一个参数,其实际作用是在有两个参数的构造函数中调用带一个参数的构造方法完成对象的初始化,
class Person {
private int age;
private String name;
Person() { } //空参构造函数
Person(String nm) { //带一个形参的有参构造函数
name = nm;
}
Person(String nm, int a) { //带两个形参的有参构造函数
this(nm);
age = a;
}
}
class PersonDemo {
public static void main(String[] args) {
Person p = new Person("张三", 23);
}
}
super关键字
1、调用父类的成员变量: super.成员变量;
2、调用父类的成员方法:super.成员方法;
3、调用父类的构造方法: super(参数);
此处位子类的有参构造函数,通过super关键字实现调用父类的构造函数来完成子类对象的初始化。
以下为示例代码:
1、父类:
public abstract class Employee {
private String id;// 员工编号
private String name; // 员工姓名
//空参数构造方法
public Employee() { }
//有参数构造方法
public Employee(String id, String name) {
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
//工作方法(抽象方法)
public abstract void work();
}
2、子类:
public abstract class Developer extends Employee {
//空参数构造方法
public Developer() {
super();
}
//有参数构造方法
public Developer(String id, String name) {
super(id, name);
}
}