漫谈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 ...
随机推荐
- 【改】iOS学习之键盘类型UIKeyboardType
关于 UITextField 的键盘是可以自定义的,正好在一个代码用这个,就总结一下. 在 UITextField 中有一个 keyboardType 属性,它的类型是一个枚举值,下面就是枚举值和对应 ...
- JAVA反编工具件安装 JD-eclipse
想看Android API源码,但是只有class文件,于是找了个反编译工具Java Decompiler,免费的反编译工具.eclipse插件:JD-eclipse. 安装步骤: 1.确保计算机上 ...
- Python笔记-第一天
1.Python的输出print函数要把输出的字符串用单引号或者双引号括起来,但是不能混用. 比如print('hello,world')和print("hello,world") ...
- python函数
一.函数: 创建函数:使用def语句 举例:定义一个返回斐波那楔数列列表的函数 def fibs(num): result = [0,1] for i in range(num-2): result. ...
- antmate.css
本文各式各样的动画来源于http://daneden.github.io/animate.css/ ,若想看效果可复制运行下文,或到该网站自行查阅. <!DOCTYPE html> < ...
- PHP 实现“贴吧神兽”验证码
最早看到 “贴吧神兽” 验证码是在百度贴吧,吧主防止挖坟贴,放出了究极神兽验证码 例如: 地址:http://tieba.baidu.com/p/3320323440 可以用 PHP + JavaSc ...
- Ubuntu 设置当前用户sudo免密码
方法1 # 备份 /etc/sudoers sudo cp /etc/sudoers . #打开 /etc/sudoers sudo visudo # 在文件末尾加入 kube ALL=NOPASSW ...
- Mac通过终端显示和隐藏 隐藏文件
defaults write com.apple.finder AppleShowAllFiles -bool true; killall Finder //显示隐藏文件 defaults write ...
- bahuanghou111
#include<stdio.h> int map[8][8]={0}; int count=0; int safe(int x,int y) { int i; int j; for(i= ...
- poj1753
#include <stdio.h> char s[100][100]; int s1[100][100]; int ax[5]={0,-1,0,1,0}; int ay[5]={0,0, ...