方法的重写

在继承关系中,子类会自动继承父类中定义的方法,但有时在子类中需要对继承的方法进行一些修改,即对父类的方法进行重写。在子类中重写的方法需要和父类被重写的方法具有相同的方法名、参数列表和返回值类型,且在子类重写的方法不能拥有比父类方法更加严格的访问权限。

 

下面通过一个案例讲解方法的重写,具体代码如图1所示。

图1:图1运行结果:在图1中,第2~7行代码定义了一个Animal类,并在Animal类中定义了一个shout()方法。第9~14行代码定义了Dog类继承Animal类,并在类中重写了父类Animal的shout()方法。第18~19行代码创建并实例化Dog类对象dog,并通过dog对象调用shout()方法。从图1运行结果可以看出,dog对象调用的是子类重写的shout()方法,而不是父类的shout()方法。

子类重写父类方法时,不能使用比父类中被重写方法更严格的访问权限。例如,父类中的方法是public权限,子类的方法就不能是private权限。如果子类在重写父类方法时定义的权限缩小,则在编译时将出现错误提示。下面对图1代码进行修改,修改后的代码如图2所示。

图2:编译图2代码时,编译报错,如图2运行结果所示 。

 图2运行结果:

在图2中,第4行代码在Animal类中定义了一个shout()方法并将访问权限定义为public,第9~14行代码定义了一个Dog类并继承Animal类,第11行代码在声明shout()方法时,将shout()方法的访问权限定义为private。如图2运行结果所示,编译文件会报错,这是因为子类重写父类方法时,不能使用比父类中被重写的方法更严格的访问权限。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值