一、this:
1、只能用在一个类的方法和构造方法中,表示调用当前方法的对象
public class AA {
String name = "张三";
public void study(String name){
System.out.println(this.name + "在学习");
}
public static void main(String[] args) {
AA aa = new AA();
//输出的结果是“张三在学习”,因为this.name调用的是成员变量name=“张三”
aa.study("李四");
}
}
2、this()表示当前类的构造方法,具体是哪一个构造方法由参数决定,并且只能在某一个构造方法中的第一行代码出现
public class AA {
public AA() {
System.out.println("构造方法一");
}
public AA(String name) {
//调用构造方法一
this();
System.out.println(name + "构造方法二");
}
public static void main(String[] args) {
AA aa = new AA("张三");
}
}
输出结果:构造方法一
张三构造方法二
二、super
1)用在有继承关系的时候,在子类中调用父类的方法,代表的是父类的对象
2)在子类的构造方法中,必须要调用父类的某一个构造方法:
a、在子类默认的无参构造方法中,会默认调用父类的父类构造方法,super(),在父类的没有无参构造方法时,只能调用某个有参的构造方法,就是在子类中写一个构造方法(有参无参都可以),调用父类某个有参的构造方法
//父类中含有一个带参的构造方法
public class AA {
public AA(String name){
System.out.println(name + "父类有参的构造方法");
}
}
//子类必须写一个构造方法,调用父类中某个带参的构造方法
public class BB extends AA {
public BB () {
//调用的是父类某个带参的构造方法
super("张三");
}
public static void main(String[] args) {
//调用的是父类的构造方法
BB bb = new BB();
}
}
三、final
1)final修饰类,表示该类不可以被继承,因此接口和抽象类不能写成final,因为接口和抽象类就是用来继承的
2)final修饰变量,叫常量,变成必须初始化(要在构造方法之前初始化也可以在构造方法的时候初始化),只能初始化一次并且不能被修改,final修饰参数变量,表示参数变量不能被修改,穿什么值就是什么值
3)final修饰方法,表示该方法不能被重写