子类重写了父类的方法后,子类对象将对父类被重写的方法无法访问。这又该如何去访问呢,Java中专提供了一个super关键字来访问父类的方法或者成员变量
使用super关键字调用父类的成员变量和成员方法
语法格式:
super.成员变量
super.成员方法(参数1,参数2,…)
实例:
//父类
public class Animal {
String name = "牧羊犬";
public void run(){
System.out.println("动物地上跑...");
}
}
//Cat类继承父类Animal
public class Cat extends Animal{
String name = "哈士奇";
@Override
public void run(){
//调用父类的run()方法
super.run();
}
public void showName(){
System.out.println("父类属性值:" + super.name);
}
}
//测试类
public class Example01 {
public static void main(String[] args) {
Cat cat = new Cat();
//调用run()方法
cat.run();
//调用showName()方法
cat.showName();
}
}
使用super关键字访问父类的构造方法
语法格式:
super(参数1,参数2,…)
实例:
//父类Animal
public class Animal {
public class Animal {
//定义一个成员变量name
String name;
//定义一个有参构造方法
public Animal(String name) {
this.name = name;
System.out.println(this.name);
}
}
}
//Ca类继承Animal
public class Cat extends Animal{
public Cat(String name) {
super(name);
}
}
public class Example01 {
public static void main(String[] args) {
Cat dog = new Cat("藏獒");
}
}
}
在Cat()类中的无参构造方法中通过super关键字调用父类的有参构造方法当Cat类中的构造方法被调用父类的构造方法就会被调用
需要注意的是:super关键字调用父类的构造方法的代码必须位于子类的构造方法第一行并且只能出现一次