全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
重载,继承,重写和多态的区别2007年08月07日 星期二 下午 01:29重载,继承,重写和多态的区别:继承是子类获得父类的成员,重写是继承后重新实现父类的方法。重载是在一个类里一系列参数不同名字相同的方法。多态则是为了避免在父类里大量重载引起代码臃肿且难于维护。网上看到一个有趣的说法是:继承是子类使用父类的方法,而多态则是父类使用子类的方法。下面的例子包含了这四种实现:class Triangle extends Shape public int getSides() return 3;class Rectangle extends Shape public int getSides(int i) return i;public class Shape public boolean isSharp() return true;public int getSides() return 0 ;public int getSides(Triangle tri) return 3 ;public int getSides(Rectangle rec) return 4 ;public static void main(String args) Triangle tri = new Triangle(); System.out.println(Triangle is a type of sharp? + tri.isSharp(); Shape shape = new Triangle(); System.out.println(My shape has + shape.getSides() + sides.);红色是重载,绿色是重写,蓝色是继承,粉红是多态注意Triangle类的方法是重写,而Rectangle类的方法是重载。比较红色的和粉红的部分就可以发现多态对重载的优点:如果用重载,则在父类里要对应每一个子类都重载一个取得边数的方法;如果用多态,则父类只提供取得边数的接口,至于取得哪个形状的边数,怎样取得,在子类里各自实现(重写)。重写、覆盖、重载、多态几个概念的区别分析 发现在面试时,面试官好喜欢问这几个概念的区别,现整理总结一下,写的不对的地方欢迎大伙提意见:) override-重写(=覆盖)overload-重载polymorphism - 多态override是重写(覆盖)了一个方法,以实现不同的功能。一般是用于子类在继承父类时,重写(重新实现)父类中的方法。重写(覆盖)的规则: 1、重写方法的参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载. 2、重写方法的访问修饰符一定要大于被重写方法的访问修饰符 (public protected default private)。 3、重写的方法的返回值必须和被重写的方法的返回一致; 4、重写的方法所抛出的异常必须和被重写方法的所抛出的异常一致,或者是其子类; 5、被重写的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行重写。 6、静态方法不能被重写为非静态的方法(会编译出错)。 overload是重载,一般是用于在一个类内实现若干重载的方法,这些方法的名称相同而参数形式不同。重载的规则: 1、在使用重载时只能通过相同的方法名、不同的参数形式实现。不同的参数类型可以是不同的参数类型,不同的参数个数,不同的参数顺序(参数类型必须不一样); 2、不能通过访问权限、返回类型、抛出的异常进行重载; 3、方法的异常类型和数目不会对重载造成影响; 多态的概念比较复杂,有多种意义的多态,在另一篇文章中再细谈。一个有趣但不严谨的说法是:继承是子类使用父类的方法,而多态则是父类使用子类的方法。一般,我们使用多态是为了避免在父类里大量重载引起代码臃肿且难于维护。 举个例子:public class Shape public static void main(String args) Triangle tri = new Triangle(); System.out.println(Triangle is a type of shape? + tri.isShape();/ 继承Shape shape = new Triangle(); System.out.println(My shape has + shape.getSides() + sides.); / 多态 Rectangle Rec = new Rectangle(); Shape shape2 = Rec; System.out.println(My shape has + shape2.getSides(Rec) + sides.); /重载 public boolean isShape() return true; public int getSides() return 0 ; public int getSides(Triangle tri) /重载 return 3 ; public int getSides(Rectangle rec) /重载 return 4 ; class Triangle extends Shape public int getSides() /重写,实现多态 return 3; class Rectangle extends Shape public int getSides(int i) /重载 return i; 注意Triangle类的方法是重
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 影响我国城乡居民消费现状的因素
- 影响混凝土的塌落度
- 轨道交通 地面装置 交流开关设备 第3部分:测量、控制和保护装置技术条件 编制说明
- 阳春市启贤实验学校八年级上学期语文11月期中考试卷
- 货车延迟过户协议书(2篇)
- 《数学物理方法》第3章测试题
- 南京工业大学浦江学院《商务谈判》2021-2022学年第一学期期末试卷
- 金瑞.林城住宅小区 2#及 1-9 轴地下车库水暖工程施工组织设计
- 对鲜花说课稿
- 南京工业大学浦江学院《汽车电子控制基础》2022-2023学年第一学期期末试卷
- 个人开车与单位免责协议书
- 《护理文书书写》课件
- 广东省广州市海珠区2024-2025学年三年级上学期月考英语试卷
- 2023年北京市重点校初三(上)期末历史试题汇编:第一次工业革命
- 2024新人教版道法一年级上册第三单元:养成良好习惯大单元整体课时教学设计
- 医疗器械质量安全风险会商管理制度
- 护理职业生涯规划书成长赛道
- 肺结节科普宣教培训
- 维克多高中英语3500词汇
- [专业英语考试复习资料]专业八级分类模拟41
- 三位数加三位数(不连续进位)教学设计及说课稿
评论
0/150
提交评论