二、Java面向对象(8)_继承思想——方法覆盖

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 Bird
11 {
12     @override
13     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 }

输出结果:

参考博客:

http://ihyperwin.iteye.com/blog/1553609

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

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

override:覆盖(重写)

overload:重载

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

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

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

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

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

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

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

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

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

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

原文地址:https://www.cnblogs.com/sunNoI/p/8977013.html

时间: 2024-10-08 10:24:11

二、Java面向对象(8)_继承思想——方法覆盖的相关文章

20145237 实验二 “Java面向对象程序设计”

20145237 实验二 “Java面向对象程序设计” 实验内容 • 理解并掌握面向对象三要素:封装.继承.多态 • 初步掌握UML建模 • 熟悉S.O.L.I.D原则 • 使用TDD设计实现复数类 实验步骤 单元测试 •1.三种代码: • 伪代码: 百分制转五分制: 如果成绩小于60,转成“不及格” 如果成绩在60与70之间,转成“及格” 如果成绩在70与80之间,转成“中等” 如果成绩在80与90之间,转成“良好” 如果成绩在90与100之间,转成“优秀” 其他,转成“错误” 产品代码: 3

20165306 实验二 Java面向对象程序设计

实验二 Java面向对象程序设计 实验要求 1.提交最后三个JUnit测试用例(正常情况,错误情况,边界情况)都通过的截图,截图上要有画图加水印,输入自己的学号.本提交点考查JUnit会不会使用,测试用例至少要包含正常情况,错误情况,边界情况的测试. 2.使用JUnit学习Java,以 TDD的方式研究学习StringBuffer.提交你的单元测试用例和测试通过的截图,截图要加上学号水印.测试自己会不会写JUnit测试用例. 3.对设计模式示例进行扩充,体会OCP原则和DIP原则的应用,初步理解

20135234马启扬 实验二 Java面向对象程序设计

北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计  班级:1352  姓名:马启扬  学号:20135234 成绩:             指导教师:娄嘉鹏    实验日期:2015.5.7 实验密级:         预习程度:         实验时间:15:50--22:50 仪器组次:34         必修/选修: 选修            实验序号:02 实验名称:实验二 Java面向对象程序设计 实验内容 1. 初步掌握单元测试和T

20145311实验二 "Java面向对象程序设计"

20145311实验二 "Java面向对象程序设计" 程序设计过程 实验内容 使用单元测试.TDD的方式设计实现复数类 Complex 编写代码: 1.首先设计实现复数类 Complex,复数类 Complex的方法设计有:复数类的定义.复数类输出的形式,复数的加法.减法.乘法.除法(除法因为涉及到一个整除的问题,所以会有些缺陷)运算. 2.伪代码:Complex类中会有一个复数的实部与虚部,以及复数输出的形式然后是四种运算:加法:实部相加,虚部相加,最后返回虚数的形式减法:实部相减,

20145326《Java程序设计》实验二Java面向对象程序设计实验报告

20145326<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步骤 一.单元测试 1. 三种代码·伪代码·产品代码·测试代码Example:需求:我们要在一个MyUtil类中解决一个百分制成绩转成“优.良.中.及格.不及格”五级制成绩的功能. 伪代码: 百分制转五分制: 如果成绩小于60,转成“不及格” 如果成绩在60与70之间,转成“

20165336 实验二 Java面向对象程序设计

20165336 实验二 Java面向对象程序设计 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:康志强 学号:20165336 指导教师:娄嘉鹏 实验日期:2018年4月16日 实验时间:13:45 - 15:25 实验序号:实验二 实验名称:Java面向对象程序设计 实验目的与要求: 二.实验内容 1初步掌握单元测试和TDD 2 理解并掌握面向对象三要素:封装.继承.多态 3 初步掌握UML建模 4 熟悉S.O.L.I.D原则 5 了解设计模式 三.实验要求 1.没有Li

20165332实验二 Java面向对象程序设计

20165332实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程 完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等).解决办法(空洞的方法如"查网络"

20165308 实验二 Java面向对象程序设计

20165308 实验二 Java面向对象程序设计 实验二 Java面向对象程序设计 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:张士洋 学号:20165308 指导教师:娄嘉鹏 实验日期:2018年4月16日 实验时间:15:35 - 17:15 实验序号:实验二 实验名称:Java面向对象程序设计 实验内容及要求: 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验内容.步骤与体会 目

java基础篇(二) ----- java面向对象的三大特性之继承

java面向对象的三大特性之继承: 复用代码是java众多引人注目的功能之一,但是想要成为极具革命性的语言,仅仅是复制代码并对其加以改变是不够的.它必须能够做更多的事.引自<Think in java>    而代码复用也是程序员一直不断追求的.由此来说下代码复用的一种方式 java面向对象的三大特性--继承!! 在面向对象程序设计中,继承机制可以有效地组织类的结构.确定类之间的关系,在已有类的基础上开发新的类.继承机制在程序代码复用.提高软件开发效率.降低软件系统维护成本等方面具有重要作用.