除了构造方法,还有哪些方式可以调用父类的方法?
除了在子类的构造方法中使用 super 关键字来显式调用父类的构造方法之外,还有以下几种方式可以调用父类的方法:
使用 super 关键字来调用父类的方法。子类可以使用 super.方法名() 的方式来调用父类中的方法。这种方式适用于子类需要在父类的基础上进行一些扩展的情况。
将父类的方法声明为 public 或 protected,然后在子类中直接调用。由于 public 和 protected 方法可以被子类继承和访问,因此子类可以直接调用这些方法。
在父类中定义一个 final 方法,子类无法重写该方法,但是可以直接调用它。由于 final 方法不能被子类重写,因此子类可以安全地调用这些方法。
例如,假设有如下的父类和子类:
public class Animal { protected String name; public Animal(String name) { this.name = name;} public void eat() { System.out.println(name + "正在吃饭...");}}public class Cat extends Animal { private int age; public Cat(String name, int age) { super(name); this.age = age;} public void printInfo() { eat(); // 调用父类的方法 System.out.println("名字:" + name + ",年龄:" + age);} public void superEat() { super.eat(); // 使用super关键字调用父类的方法}}
在这个示例中,Animal类中定义了一个 public 的 eat() 方法,表示动物正在吃饭。Cat类继承了Animal类并定义了一个age属性。在printInfo()方法中,直接调用了父类的eat()方法,使用 super 关键字调用父类的方法的示例可以在superEat()方法中看到。
需要注意的是,子类可以继承并访问父类的 public 和 protected 方法,但是不能访问父类的私有(private)方法。私有方法只能被父类自身的方法访问,对于子类来说是不可见的。此外,子类也不能重写父类的 final 方法。
网友评论