java super 和 this 关键字的区分和使用

版权声明:尊重原创,码字不易,转载需博主同意。 https://blog.csdn.net/qq_34626097/article/details/82990959

1.关键字-this(this是什么)

  1. 在java中,this关键字比较难理解,但它的作用和它的单词意思很接近。
    1.1. 它在方法的内部使用,即这个方法所属对象的调用
    1.2. 它在构造器中内部使用,表示该构造器正在初始化的对象

  2. this表示当前对象,可以用来调用属性、方法和构造器

  3. 什么时候使用this关键字呢?
    3.1. 当方法内需要调用该方法的对象时,就用this

  4. 构造器中的使用(特殊)
    4.1. 可以在构造器通过“this(形参)”的方式来显示的调用本类中其他重载的指定的构造器。
    4.2. 在构造器内部必须声明在首行。
    4.3. 若一个类有n个构造器,那么最多有n-1构造器使用了this(形参);

  5. this小结
    5.1. 用来修饰方法、属性、构造器
    5.2. this理解成当前对象或者正在创建的对象 比如:this.name;this.show( );

2. 在java类中使用super来调用父类中的指定操作:

  1. super可用于访问父类中定义的属性
  2. super可用于调用父类中定义的成员方法
  3. super可用于调用父类中定义的成员方法
  4. super可用于在子类构造方法中调用父类的构造器

注意:

  1. 尤其是当子父类出现同名成员时,可用super进行区分
  2. super的追溯不仅限于直接父类super的追溯不仅限于直接父类
  3. super和this很像,this代表本类对象的引用,super代表父类的内存空间的标识super和this很像,this代表本类对象的引用,super代表父类的内存空间的标识

3. this 和 super的区别

  1. 访问属性 this访问本类中的属性如果本类中没有此属性,则从父类中继续寻找 super 访问父类中的方法
  2. 调用方法 this访问本类中的方法 super 直接访问父类的方法
  3. 调用构造器 this调用本类构造器,必须放在构造器的首行 super调用父类构造器,必须放在子类构造器的首行
  4. 特殊 this表示当前对象 super无此概念

4.子类实例化的过程

  • 由父类构造器先执行,在一层一层然后到子类

5.demo

public class Person {

	private String name;
	private int age;
	int id;//身份证
	...
	public void eat() {
		System.out.println("吃饭");
	}
}
public class Student extends Person {
	private String schoolName;
	private int id;//学号
	public Student(String schoolName, int id) {
		super();//调用父类的构造器结构,加载父类的属性
		this.schoolName = schoolName;
		this.id = id;
	}
	
	public void show() {
		//默认this.id
		System.out.println(this.id);		
		System.out.println(super.id);
	}
}

猜你喜欢

转载自blog.csdn.net/qq_34626097/article/details/82990959