博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二、Java面向对象(8)_继承思想——方法覆盖
阅读量:6192 次
发布时间:2019-06-21

本文共 1510 字,大约阅读时间需要 5 分钟。

2018-05-01

 

方法覆盖(重写)

 

override(覆盖):

覆盖解决的问题:当父类的某一个行为(方法)不符合子类具体的特征时,此时父类需要重新定义父类方法,并重写方法体。

注意:只有方法才有覆盖的概念,字段没有。

 

方法覆盖的原则:

  1、实例方法签名必须相同。(方法签名 = 方法名称 + 方法参数列表)

  2、子类方法不能返回比父类方法更大的数据类型,子类方法的返回值类型必须和父类方法的返回值类型相同,或者子类方法的返回值类型是父类方法的返回值类型的子类。

   (子类可以返回更具体的数据类型,比如父类返回Object,子类可以返回String)

  3、子类方法不能低于父类方法的访问权限 
  4、子类方法不能抛出比父类方法更多的异常,子类方法抛出的异常必须和父类方法抛出的异常相同,或者子类方法抛出的异常类是父类方法抛出的异常类的子类 。
  5、方法覆盖只存在于子类和父类(包括直接父类和间接父类)之间。在同一个类中方法只能被重载,不能被覆盖。

 

建议:直接复制父类方法到子类中,再重写其方法体即可。

方法覆盖的判断:在方法前写上@override标签。

         若覆盖成功,则编译通过,否则编译失败。

 

代码举例:

1 //鸟类 2 class Bird 3 { 4     public void fly(){ 5         System.out.println("自由飞翔"); 6     } 7 } 8 //企鹅 9 10 class Penguin extends Bird11 {12     @override13     public void fly(){14         System.out.println("折翼天使");15     }16 }17 18 19 20 //方法覆盖21 class OverrideDemo 22 {23     public static void main(String[] args) 24     {25         //创建一个企鹅对象26         Penguin p = new Penguin();27         //调用飞翔方法28         p.fly();29     }30 }

 

输出结果:

 

 

 

参考博客:

-----------------------------------------------------------------------------------------------------------------------

 

方法覆盖和方法重载的区别:

覆盖(重写)

重载

实际上两者没有任何关系。

 

 

方法重载定义:在一个类中定义多个同名的方法,要求方法之间的参数列表不同即可。

方法重载的作用:完成一组任务相似但参数的类型或参数的个数不同的方法。(屏蔽同一功能的方法由于参数不同而造成方法名称不同的差异)

方法重载的调用:Java编译器能通过检查调用的方法的参数类型和个数选择一个恰当的方法。

方法重载的判断:两同一不同

        两同:同一个类,方法名称相同

        一不同:方法的参数列表不一致(参数类型、参数个数、参数顺序)

注意:方法重载和方法返回值类型无关,只是一般要求同一功能的方法返回值类型一致

   参数列表和参数名称无关,也就是说方法重载和形参无关

 

Java编译器能通过检查调用的方法的参数类型和个数选择一个恰当的方法。

 

转载于:https://www.cnblogs.com/sunNoI/p/8977013.html

你可能感兴趣的文章
Atitit. 项目文档目录大纲 总集合 v2
查看>>
dtrace4linux_Example
查看>>
Android 仿网易新闻v3.5:上下滑动的引导页
查看>>
[LeetCode] Line Reflection 直线对称
查看>>
AppFabric 版本区分
查看>>
Dedecms去掉URL中a目录的方法
查看>>
CentOS下配置Hadoop集群:java.net.NoRouteToHostException: No route to host问题的解决
查看>>
初识JavaScript
查看>>
CentOS运行级别和开机过程
查看>>
Windows Form调用R进行绘图并显示
查看>>
Atitit 游戏的原理与概论attilax总结
查看>>
苹果推送(APNs)ios push小结
查看>>
ArcGIS中的WKID
查看>>
系统剖析Android中的内存泄漏
查看>>
linux中权限的修改
查看>>
Spring Boot 自定义属性 以及 乱码问题
查看>>
[Javascript Crocks] Recover from a Nothing with the `coalesce` Method
查看>>
CentOS下的apache配置支持php
查看>>
How to Design Programs, Second Edition
查看>>
潜移默化学会WPF(炫丽篇<一>)--简单易用动画-错误提示
查看>>