this:
- 方法的隐式参数,代表调用此方法的对象
- 在构造函数中调用同类中的其他构造函数
public class Employee {
private String name = "Alex";
private int age = 24;
//第一个构造函数
public Employee(String name) {
this.name = name;
}
//第二个构造函数
public Employee(String name, int age) {
this(name);//调用第一个构造函数
this.age = age;
}
public String getName() {
return name;
}
}
注:this调用同类的构造函数,只能在构造函数的第一行,且只能调用一次。
static:
- 静态域,如果将域定义为static,那么每个对象都将共享这一个实例域,任何一个对象更改了这个实例域都将会影响其他对象。静态域属于类而不属于对象,即使对象不存在,静态域也存在。
- 静态常量,static和final同时修饰
- 静态方法,静态方法是没有this参数的方法,不能再静态方法中访问实例域,因为静态方法的调用时不依赖于具体对象的,所有使用静态方法访问实例域的时候,无法判断具体访问哪个对象的实例域。
super:
- 调用父类的实例方法。
- 调用父类的构造函数。
public class Manager extends Employee{
public Manager(String name, int age, int bonus) {
super(name, age);//调用父类的第二个构造函数,必须在第一条语句调用
}
public String getName() {
return super.getName();//无法直接访问父类的私有实例域,调用父类的实例方法
}
}
final:
- 修饰实例域,构建对象时必须初始化final实例域,也就是说,在任何一个构造函数执行之后,这个域的值必须被设置,并且对象构建后这个值不会被修改。
- 修饰实例方法,类中的某个方法被final修饰后,子类将不能override这个方法。
- 修饰类,被final修饰的类不能被继承,无法创建这样的类的子类。final类中的所有方法会自动成为final,但不包括域。
参考书目:
[Java核心技术 卷一:基础知识]Core Java Volume I-Fundamentals. 9. Cay S.Horstmann