Java中的方法重载与重写
来源:互联网 发布:做吉他谱的软件 编辑:程序博客网 时间:2024/06/05 00:13
1.简述
- 重载就是一个类可以有多个同名方法。
- 重写是指在子类继承父类的时候,可以改写父类方法的实现。
2.说明
首先定义一个Monster类。
class Monster { private String nickname; private String territory; public Monster() {} public Monster(String nickname) { this.nickname = nickname; } public void earn(String slogan) { System.out.println(slogan); } public String getName() { return nickname; } public String getTerritory() { return territory; } public void setTerritory(String territory) { this.territory = territory; } public String toString() { return "我是" + nickname; }}
接着再定义一个Goblin继承Monster。
class Goblin extends Monster { public Goblin(String nickname) { super(nickname); }}
到目前为止,上面的例子还只是一个很普通的继承关系,还没有出现重载与重写。接下来,在Goblin中定义两个方法。
class Goblin extends Monster { public Goblin(String nickname) { super(nickname); } public void earn(String slogan) { System.out.print("我是" + this.getName() + "。"); super.earn(slogan); } public void earn(String role, String story) { System.out.println(role + ": " + story); }}
然后,写个例子。
public class Story { public static void main(String[] args) { // TODO Auto-generated method stub String slogan = "此山是我开,此树是我栽,要想从此过,留下买路财."; Monster bullDemonKing = new Monster("平天大圣"); bullDemonKing.earn(slogan); Goblin redBoy = new Goblin("圣婴大王"); redBoy.earn(slogan); String role = "落难儿童"; StringBuilder story = new StringBuilder() .append("师父呀,山西去有一条枯松涧,涧那边有一庄村,我是那里人家。") .append("我祖公公姓红,只因广积金银,家私巨万,混名唤做红百万。") .append("年老归世已久,家产遗与我父。") .append("近来人事奢侈,家私渐废,改名唤做红十万,专一结交四路豪杰,将金银借放,希图利息。") .append("怎知那无籍之人,设骗了去啊,本利无归。") .append("我父发了洪誓,分文不借。") .append("那借金银人,身贫无计,结成凶党,明火执杖,白日杀上我门,将我财帛尽情劫掳,把我父亲杀了,见我母亲有些颜色,拐将去做什么压寨夫人。") .append("那时节,我母亲舍不得我,把我抱在怀里,哭哀哀,战兢兢,跟随贼寇,不期到此山中,又要杀我,多亏我母亲哀告,免教我刀下身亡,却将绳子吊我在树上,只教冻饿而死,那些贼将我母亲不知掠往那里去了。") .append("我在此已吊三日三夜,更没一个人来行走。") .append("不知那世里修积,今生得遇老师父,若肯舍大慈悲,救我一命回家,就典身卖命,也酬谢师恩,致使黄沙盖面,更不敢忘也。"); redBoy.earn(role, story.toString()); }}
然后看一下运行结果。
解释一下上面的情况,上面在Monster中定义了一个earn方法,然后在Goblin中第把它给重写了,接着Goblin中又定义了一个新的earn方法,相当于又把自己的earn方法给重载了。翻译成故事就是,牛魔王每次去打劫(或者谋生?)的时候都把口号喊出来(通过earn方法),它的儿子红孩儿想在喊口号的时候把自己的外号也叫出来,于是就重写了老牛的earn方法。后来碰上了狠角色,觉得只是喊口号不太可行,于是就通过重载earn方法角色扮演了一把,装了一个可怜的角色,通过一个悲惨的故事骗取别人同情心然后作案。然后,结果就是师父又被妖怪抓走了。
所以,重载就是同一类多个同名的不同方法(比如,红孩儿遇弱则一声吼,遇强一部剧,都叫earn方法)。而重写就是改写一下父类的方法实现(就像红孩儿不仅要喊口号,还要喊外号一样)。
3.总结
在Java中的方法重载是通过同一个方法名而参数不同实现的。这里的参数不同包括参数类型和参数个数。
在Java中的方法重写是通过继承父类方法,并改写其方法体实现的。
0 0
- Java中的重载方法与重写
- Java中的方法的重写与重载
- Java中的方法重载与重写
- Java中的方法重写(Overriding)与方法重载(Overloading)
- Java中的方法重写(Overriding)与方法重载(Overloading)
- java中的重写与重载
- java中的重载与重写
- java中的重写与重载
- JAVA 中的重写与重载
- Java中的重载与重写
- Java中的重写与重载
- java中的重载与重写
- Java中的重写与重载
- Java中的重载与重写
- Java中的重载与重写
- java方法重写与重载
- Java 方法重写与重载
- Java-方法重载与重写
- 制作mac os Sierra 系统盘
- Hive2.0.0安装配置
- TCP的三次握手和四次挥手详解
- Hibernate配置
- 素数距离问题
- Java中的方法重载与重写
- python笔记之面向对象
- Sorting It All Out 拓扑
- 函数的调用过程—栈帧
- Redis数据结构和对象(三)
- VS“新建网站”与“新建Asp.Net Web 应用程序”的区别
- 1619-7 张良 十一月二十六号总结 [连续第五十七天]
- Codeforces(738D)-D. Sea Battle
- 编译还是解释?