方法的重写
在继承关系中,子类会自动继承父类定义的方法,但有时在子类中需要对继承的方法进行一些修改,即对父类方法的重写。在子类中重写的方法需要和父类被重写的方法具有相同的方法名、参数列表和返回值类型,且在子类重写的方法不能拥有比弗雷方法更加严格的访问权限。
代码示例如下:
//定义Animal类
class Animal{
void shout (){
System.out.println("动物发出叫声");
}
}
//定义Dog类继承Animal类
class Dog extends Animal {
//重写父类Animal中的shout()方法
void shout() {
System.out.println("汪汪汪……");
}
}
//定义测试类
public class test {
public static void main (String[] args) {
Dog dog = new Dog(); //创建Dog的实例对象
dog.shout(); //调用Dog类重写的shout()方法
}
}
// An highlighted block
var foo = 'bar';
运行结果如下图所示:
但是,在子类重写父类方法时,不能使用比父类中被重写方法更严格的访问权限。例如:父类中的方法是public权限,子类的方法就不可以是private权限。如果子类在重写父类方法时定义的权限缩小,在编译时将出现错误提示。
代码示例如下:
//定义Animal类
class Animal{
void shout (){
System.out.println("动物发出叫声");
}
}
//定义Dog类继承Animal类
class Dog extends Animal {
//重写父类Animal中的shout()方法
private void shout() {
System.out.println("汪汪汪……");
}
}
//定义测试类
public class test {
public static void main (String[] args) {
Dog dog = new Dog(); //创建Dog的实例对象
dog.shout(); //调用Dog类重写的shout()方法
}
}
运行错误的结果如下图所示: