super关键字:
(1) 使用super可以从子类中调用父类中的构造方法
(2) 从子类中调用父类中的普通方法,属性
1、使用super调用父类中的普通方法和属性
在Java中,会遇到子类中的成员变量或方法与父类中的成员变量或方法同名。因为子类中的成员变量或方法名优先级高,所以子类中的同名成员变量或方法就隐藏了父类的成员变量或方法,如果想要使用父类中的这个成员变量或方法,就需要用到super。
class Country {
String name="xianfan";
void value() {
this.name = "China";
}
}
class City extends Country {
String name;
void value() {
this.name = "Hefei";
super.value();
System.out.println(this.name);
System.out.println(super.name);
}
public static void main(String[] args) {
City c=new City();
c.value();
}
}
2、使用super调用父类中的构造方法
使用super调用父类中的构造方法时需要注意:调用语句必须放在子类构造方法的首行。
class Person{
private String name;
private int age;
public Person(){
System.out.println("The new one");
}
public Person(String name,int age){
this();
this.name = name;
this.age = age;
}
public String getInfo(){
return "name:" + this.name + ",age:" + age;
}
}
class Student extends Person{
private String school;
public Student(String name,int age,String school){
super(name,age);
this.school = school;
}
public String getInfo(){
return super.getInfo() + ",shool:" + this.school;
}
}
public class StudentDemo{
public static void main(String[]args){
Student st = new Student("xy",23,"beijing");
System.out.println(st.getInfo());
}
}
例子解释:
(1) 属性没有用getter和setter封装好
(2) this() 调用本类中的构造方法
(3) super(name,age) 调用父类的构造方法
(4) super.getInfo() 调用父类中的普通方法