漫谈java重载与重写
- 重载(Overloading):为了让方法名相同而形参不同的构造方法同时存在,让类以统一的方式处理不同类型数据的一种手段
- 重写(Overriding):导出类对继承自基类的方法做出一定的修改,又称方法覆盖。
区别:
- 应用范围:Overloading用于同一个类的内部;Overriding用于存在继承关系的基类和导出类之间
- 鉴别点:Overloading 每个重载方法都有独一无二的参数类型类别(或参数类型不同,或参数个数不同,或参数顺序不同(顺序不同代码难以维护,不建议使用))
Overriding:导出类的方法和基类的方法具有相同的方法名、返回类型和参数列表,重写方法覆盖基类的方法
案例分析:
- Overloading:
在Tree这个类中,有两种构造器:一个默认构造器Tree()(不含参数),一个含参数的构造器Tree(int initialHeight),(关于构造器的问题下一节在具体阐述);
有两个方法:一个不含参的方法void info(),一个对此方法进行重载的含参方法void info(String s);
在main函数中,Tree类初始化了一个对象t,传递参数值i,所以调用含参的构造器Tree(int initialHeight),将i的值赋值给height,输出Creating new Tree that is 0 feet tall,接着调用t.info()方法,输出Tree is 0feet tall,然后调用含参重载方法t,info("overloaded method"),输出overloaded method:Tree is 0 feet tall,然后for循环5次,最后调用tree的默认构造器Tree();
- Overriding
可以看出,在基类中有三个方法void paly(),String what(),void adjust(),三个导出类Wind,Percussion,Stringed中分别对三个方法进行了重写;Wind的两个子类Woodwind,Brass对其中两个方法void play(),String what()进行了重写,在mian函数中置入orchestra数组,将五个类自动向上转型为Instrument类(向上转型、向下转型的概念将会在以后的博客中涉及到),tuneAll(orcheatra)调用tuneAll方法,将数组中的元素传入方法,然后foreach循环遍历数组中的元素for(Instrument i:e),调用tune方法,tune(i),将遍历后得到的数组元素的字符串信息i 传递到tune方法,然后i.play分别调用各自类中的重写方法play进行输出
(案例分析均来自于《java编程思想 第四版》)
漫谈java重载与重写的更多相关文章
- java 重载、重写、构造函数详解
方法重写 1.重写只能出现在继承关系之中.当一个类继承它的父类方法时,都有机会重写该父类的方法.一个特例是父类的方法被标识为final.重写的主要优点是能够定义某个子类型特有的行为. class An ...
- Java——重载和重写
前言 在程序设计中经常会遇到对对方法的重载或者重写,下面将介绍重载和重写. 重载(Overloade) 重载出现的原因 任何程序设计语言都具备的一项重要特性就是对名字的运用.当创建一个对象时,就给对象 ...
- java 重载、重写、重构的区别
1.重载 构造函数是一种特殊的函数,使用构造函数的目的是用来在对象实例化时初始化对象的成员变量.由于构造函数名字必须与类名一致,我们想用不同的方式实例化对象时,必须允许不同的构造方法同时存在,这就用到 ...
- 深入理解Java重载与重写
我们都知道Java有三大宝,分别是:多态.封装.继承.其中多态主要体现就是重写与重载(有些人认为重载根本不属于多态)两种方式,那么今天就结合研读过JVM之后自己的理解来聊聊重载与重写的VM内部是怎么实 ...
- 一句话学Java——Java重载和重写
概念:重载是指两个不同的函数有相同的名称,可以是在本类之中的函数之间的重载,也可以是子类和父类的函数之间的函数重载. 重写:只能是子类重写父类的函数.这是多态的基础. 重写的规则: 参数:重写 ...
- java重载和重写的区别
一.重载(Overloading) (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同的参数个数/类型. 重载Overloading是一个类中多态性的一种表现 ...
- java 重载与重写 【转】
首先我们来讲讲:重载(Overloading) (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同的参数个数/类型. 重载Overloading是一个类中多态 ...
- java重载和重写
重载(Overloading) (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同的参数个数/类型. 重载Overloading是一个类中多态性的一种表现. ...
- JAVA构造器,重载与重写
1. java构造器 构造器也叫构造方法(constructor), 用于对象初始化. 构造器是一个创建对象时被自动创建的特殊方法,目的是对象的初始化. 构造器 的名称与类的名称一致. JAVA通过n ...
随机推荐
- Wpf/Wp/Silverlight-Chart图表控件:柱状图、饼状图等使用汇总
链接:http://www.cnblogs.com/jimson/archive/2010/06/21/Wpfchat.html http://www.cnblogs.com/mgen/p/32361 ...
- 【转】iOS学习之Storyboard中的UIScrollView使用自动布局
在使用storyboard和xib时,我们经常要用到ScrollView,还有自动布局AutoLayout,但是ScrollView和AutoLayout 结合使用,相对来说有点复杂.根据实践,我说一 ...
- Linux 小命令
查看 cat 文件名 [查看里面的内容,cate,猫,像猫一样瞄一眼的看] more 文件名 [查看文件,文件太多,一次看不完,用 more 来查看 下一页:空格或 f 下一行:回车 ...
- phpunit学习 3:
16:17 2015/12/11phpunit学习 3:单元测试的大概步骤是:编写待测试类,编写测试用例类,编写测试类,测试.1.如果你有多个类,多个测试类的test类,那么可以编写一个AllTest ...
- View基础知识
一.View基础知识 View 是Android中所有控件的基类,是一种界面层的控件的一种抽象,代表了一个控件 1.View的位置参数 View的四个属性:top(左上角纵坐标) left(左 ...
- java并发编程:阻塞队列
一.几种主要的阻塞队列 自从Java 1.5之后,在java.util.concurrent包下提供了若干个阻塞队列,主要有以下几个: ArrayBlockingQueue:基于数组实现的一个阻塞队列 ...
- Django URL name详解
我们基于上一节的代码来开始这一节的内容. 上节源代码:zqxt_views(django 1.4 - django 1.10).zip [更新于 2016-09-06 00:13:23] 1. 打开 ...
- 2.线性表-Linked list
fatal.h #include <stdio.h> #include <stdlib.h> #define Error( Str ) FatalError( Str ) #d ...
- VIM键盘映射 (Map)~转载
VIM键盘映射 (Map) 设置键盘映射 使用:map命令,可以将键盘上的某个按键与Vim的命令绑定起来.例如使用以下命令,可以通过F5键将单词用花括号括起来: :map <F5> i{e ...
- 利用JavaScript生成随机数字!
<!DOCTYPE html> <html> <head> <title>1-99的随机数字</title> <script type ...