1.概念
1.1 this
引用当前对象
1.1.1使用this
来调用当前对象的方法或访问当前对象的属性。
1.1.2如果方法的参数名和类的属性名相同,你可以使用this
来区分。
1.1.3使用this()
来调用当前类的其他构造方法,这通常在构造方法中使用,且必须是构造方法的第一条语句。
1.2 super
引用当前对象的父类
1.2.1使用super
来调用父类的方法或访问父类的属性。特别的是,如果子类和父类有同名的方法或属性,可以使用super
来区分。
1.2.2使用super()
来调用父类的构造方法,这通常在子类的构造方法中使用,且必须是构造方法的第一条语句。
2.代码例子
class Parent {
protected String name;
public Parent(String name) {
//将传入的参数name的值赋给当前对象的name属性
//this.name来明确是在引用当前对象的name属性
this.name = name;
}
public void sayHello() {
System.out.println("Hello, I'm " + name);
}
}
class Child extends Parent {
public Child(String name) {
//在子类的构造方法中调用父类的构造方法
super(name);
}
@Override
public void sayHello() {
super.sayHello(); // 调用父类的方法
System.out.println("Hello, I'm child " + name);
}
}
简单来说,this
就是用来解决参数名和属性名相同的问题的。当参数名和属性名相同时,我们可以使用this
来明确我们是在引用当前对象的属性,而不是引用参数。
必须掌握的概念
1.引用:
在Java中,“引用”是非常重要的概念, 简单来说,一个引用就是一个变量,这个变量存储的是对象在内存中的地址,通过这个地址,我们可以访问到这个对象。
当我们说"super引用当前对象的父类"时,意思是说,通过使用super关键字,我们可以访问到当前对象从其父类继承来的字段和方法。这里的"引用"并不是说super是一个变量,而是说super提供了一种方式,让我们可以访问到当前对象的父类部分。
例如,如果我们有一个父类Parent
和一个子类Child
,在Child
类中,我们可以使用super
关键字来调用Parent
类中的方法或访问Parent
类中的字段。这里,super
就像是一个"桥梁",连接了子类和父类,使得子类可以访问到父类的字段和方法。