1.super关键字作用:
- 访问父类被隐藏的非私有成员变量:super可以用来访问父类中被子类隐藏的非私有成员变量。
- 调用父类中被重写的方法:super可以用来调用父类中被子类重写的方法。
- 调用父类的构造函数:super可以用来调用父类的构造函数,以便在创建子类对象时初始化父类部分。
详细说明:
1.访问父类被隐藏的非私有成员变量:当子类定义了一个与父类中同名的变量时,super可以用来访问父类中的那个变量。
定义一个父类
class Parent {
int num = 10;
}
定义一个子类来继承父类,super.num指向的是父类中定义的num
class Child extends Parent {
int num = 20;
void display() {
System.out.println("Child num: " + num);
System.out.println("Parent num: " + super.num);
}
}
2.调用父类中被重写的方法:当子类重写了父类的方法时,可以使用super来调用父类的版本的方法,常用于在子类中扩展父类的行为。
定义一个父类,有一个方法show()
class Parent {
void show() {
System.out.println("Parent's show method");
}
}
定义一个子类来继承这个父类,重写show()方法 ,super调用
class Child extends Parent {
void show() {
super.show(); // 调用父类的 show 方法
System.out.println("Child's show method");
}
}
调用父类的构造函数:在子类构造函数中,可以使用super()调用父类的构造函数,以确保父类部分正确初始化。
class Parent {
Parent() {
System.out.println("Parent constructor");
}
}
class Child extends Parent {
Child() {
super(); // 调用父类的构造函数
System.out.println("Child constructor");
}
}