this关键字

this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针,

【用法一:this.属性名称】

指的是访问类中的成员变量
用来区分成员变量和局部变量(形参)

*成员变量与局部变量区分:

java excel 关键字高亮显示 java关键字this super_类


java excel 关键字高亮显示 java关键字this super_父类_02

【用法二:this.方法名称】

用来访问本类的成员方法

【用法三:引用本类的构造函数 this()】

访问本类的构造方法,()中可以有参数——与构造方法保持一致

class Person{
	private String name;
	private int age;
	
	public Person(){
	}
	public Person(String name){
		this.name = name;
	}
	public Person(String name, int age){
		this(name);
		this age = age;
	}
}

【注意事项】
1、this()不能在普通方法中使用,只能在构造方法中使用
2、必须是构造方法的第一条语句

super关键字

super可以理解为是指向自己超(父)类对象的一个指针,而这个超类指的是离自己最近的一个父
类。

【用法一:普通的直接引用】

与this类似,super相当于是指向当前对象的父类的引用,这样就可以用super.xxx来引用父类的成员。

【用法二:区分变量/方法名相同的子类和父类】

子类中的成员变量或方法与父类中的成员变量或方法同名时,用super进行区分

class Person{
     protected String name;
     public Person(String name) {
       this.name = name;
     }
   }
   class Student extends Person{
     private String name;
     public Student(String name, String name1) {
       super(name);
       this.name = name1;
     }
     public void getInfo(){
       System.out.println(this.name);   //Child
       System.out.println(super.name);   //Father
     }
   }
   public class Test {
     public static void main(String[] args) {
       Student s1 = new Student("Father","Child");
       s1.getInfo();
     }
   }

【用法三:引用父类构造函数】

super(参数):调用父类中的某一个构造函数(应该为构造函数中的第一条语句)。

【this与super的区别】
1、this和super不能同时出现在一个构造函数里
因为this必然会调用其他构造函数,其他构造函数必要会有super语句存在,所以在同一个构造函数里有相同的语句,失去了语句的意义,编译不通过**【不理解】**
2、this可以调用一个构造器,不能调用两个
3、this()和super()都指的是对象,所以均不可在static环境中使用——static变量、static方法、static语句块
4、从本质上讲,this是一个指向本对象的指针,而super是一个java关键字