Java中的overload(方法的覆写)
方法覆写(overload)与方法的重载非常相似,它在 Java的继承中也有很重要的应用。
写程序可能会碰到下面的情况,在父类中已经实现的方法可能不够精确,不能满足子类
的需求。例如在前面的 Animal类中,breath方法就过于简单,对于鱼类动物是用腮呼吸的,
而对于哺乳动物则是用肺呼吸的,如何实现呢,Java提供的方法覆写就是解决这方面的问题。
在下面的程序中首先定义了一个父类 Animal,然后定义 Animal的 3个子类 Tiger、Fish
和 Dog,在父类中提供了 3个方法 eat、breath、sleep,在两个子类 Tiger和 Fish中重新定义
了 breath方法,在 Dog类中什么都没做。在 OverloadDemo中,创建了一个 Fish对象、一个
Tiger对象和一个 Dog对象,分别调用 breath方法。
class Animal {
String type;
//种类
String name;
int age;
//名称
//年龄
int weight;
void eat() {
//体重
//吃饭方法
System.out.println("动物爱吃饭");
}
void breath() {
System.out.println("动物呼吸");
}
void sleep() {
//呼吸方法
//睡觉方法
System.out.println("动物在睡觉");
}
}
//Tiger类继承 Animal类
class Tiger extends Animal {
String tigerType;
//老虎种类
String from;
//定义老虎独有变量
//Tiger自己的方法
void tigerRun() {
//老虎的奔跑方法
System.out.println("老虎在奔跑");
}
void breath(){
//继承来的呼吸方法
System.out.println("老虎是用肺呼吸的");
}
}
//Fish继承 Animal类
class Fish extends Animal{
String fishType;
//Fish自己的方法
void swim(){
System.out.println("鱼在游泳");
}
void breath(){
System.out.println("鱼是用腮呼吸的");
}
}
class Dog extends Animal{
}
public class OverloadDemo
{
public static void main(String[ ] args) {
//声明三个不同的对象
Tiger tiger=new Tiger();
Fish fish=new Fish();
Dog dog=new Dog();
//都调用 breath方法
tiger.breath();
fish.breath();
dog.breath();
}
}
程序运行结果是:
老虎是用肺呼吸的
鱼是用腮呼吸的
动物呼吸
方法被覆写后如果又需要调用,可以使用 super关键字来实现,示例如下。
class Animal {
String type;
String name;
int age;
int weight;
void eat() {
System.out.println("动物爱吃饭");
}
void breath() {
System.out.println("动物呼吸");
}
}
class Tiger extends Animal {
String tigerType;
String from;
void breath()
{
//通过 super关键字调用父类的 breath方法
super.breath();
//调用动物类的呼吸方法
System.out.println("老虎是用肺呼吸的");
}
}
public class SuperDemo{
public static void main(String args[ ]){
Tiger tiger=new Tiger();
tiger.breath();
}
}
在 Animal的子类 Tiger中,在 breath方法中,使用语句 super.breath();调用父类的 breath
方法。程序的运行结果如下:
动物呼吸
老虎是用肺呼吸的
super关键字主要有以下两个用途:
在子类构造函数中调用父类构造函数。
在子类中调用父类的方法。
Java中的overload(方法的覆写)的更多相关文章
- JAVA中继承时方法的重载(overload)与重写/覆写(override)
JAVA继承时方法的重载(overload)与重写/覆写(override) 重载-Override 函数的方法参数个数或类型不一致,称为方法的重载. 从含义上说,只要求参数的个数或参数的类型不一致就 ...
- Java中方法的覆写
所谓方法的覆写override就是子类定义了与父类中同名的方法,但是在方法覆写时必须考虑权限,即被子类覆写的方法不能拥有比父类方法更加严格的访问权限. 修饰符分别为public.protected.d ...
- JavaSE复习日记 : 继承关系和super关键字以及继承关系中方法的覆写
/* * 类的继承和super关键字 * * 软件开发的三大目的: * 可拓展性; * 可维护性; * 可重用性; * * 这里单说下可重用性这一项: * 为了代码复用,复用方式有: * 函数的调用复 ...
- [改善Java代码]覆写equals方法必须覆写hashCode方法
覆写equals方法必须覆写hashCode方法,这条规则基本上每个Javaer都知道,这也是JDK API上反复说明的,不过为什么要这样做呢?这两个方法之间有什么关系呢?本建议就来解释该问题,我们先 ...
- JAVA面对对象(二)——继承、方法的覆写
1.继承就是基于已存在的类构造一个新类,继承已存在的类就能复用类的方法和属性,并且能够添加新的方法和属性.也就是子类和父类 2.一个父类可以拥有多个子类,一个子类只允许有一个父类 3.用extends ...
- 菜鸡的Java笔记 第二十 - java 方法的覆写
1.方法的覆写 当子类定义了与父类中的完全一样的方法时(方法名称,参数类型以及个数,返回值类型)这样的操作就称为方法的覆写 范例:观察方法的覆写 class A{ public void ...
- 千万不要误用 java 中的 HashCode 方法
刚才debug追堆栈的时候发现一个很奇怪的问题 我用IE8和Google的浏览器访问同一个地址 Action的 scope="session" 也设置了 而且两个浏览器提交的参数m ...
- Java中的native方法
博客引用地址:Java中的native方法 今天花了两个小时把一份关于什么是Native Method的英文文章好好了读了一遍,以下是我依据原文的理解. 一. 什么是Native Method 简单地 ...
- java中构造方法和方法super/this超类与子类中初始化顺序
java中构造方法和方法全面解析 我相信大多说人都对构造方法.方法不陌生,而且很了解,但我也相信有很多像我这样的没有一个很好很清晰很全面的认识,今天就把它整理如下,希望能给大家带来点方便与帮助,也希望 ...
随机推荐
- Linux学习总结(18)——Linux使用init命令关机、重启、切换模式
reboot可能是每个用过Linux的人都知道的命令,但有一个命令"init"才是命令中的精英. 最近有个同事学习安装了CentOS,明明安装的是带桌面的系统,但是启动后进入了命令 ...
- Windows学习总结(8)——DOS窗口查看历史执行过的命令的三种方式
在DOS窗口执行了一些列命令完成某项工作后,如果要查看都执行了那些命令,该如何办呢?(前提:DOS窗口未关闭的情况下) 一.方法一: 使用↑↓箭头上下翻看执行过的命令,此方式适宜执行命令较少的情况. ...
- noip模拟赛 罪犯分组
分析:看了题后没别的思路,感觉就是dp,普通dp的话状态和方程实在是不好设计,观察数据,发现N非常小,暗示了这道题要用状压dp来做. 先枚举每个集合,再用O(n^2)的暴力看这个集合内有多少个冲突,如 ...
- MyBatis启动:MapperStatement创建
参考:http://blog.csdn.net/ashan_li/article/details/50351080 MappedStatement说明 一个MappedStatement对象对应Map ...
- Spring/Maven/MyBatis配置文件结合properties文件使用
使用properties文件也叫注入,比如把一些常用的配置项写入到这个文件,然后在Spring的XML配置文件中使用EL表达式去获取. 这种方式不只Spring可以使用,同样MyBatis也可以使用, ...
- [C++]_[获取Utf8字符串的字符个数和子字符串]
场景: 1.有时候须要统计utf8字符串的个数,单纯统计字节个数是不行的. 2.有时候也须要获取从某个位置開始的n个连续字符用于显示或计算. static int GetUtf8LetterNumbe ...
- HDU 5305(Friends-暴搜)
Friends Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Su ...
- Mongo使用
在用mongo进行查询时,$exists表示是否document是否包括这个field,即使field的value为null也算是包括. $exists Syntax: { field: { $exi ...
- LeetCode 917. Reverse Only Letters (仅仅反转字母)
题目标签:String 利用left, right 两个pointers, 从左右开始 互换 字母.如果遇到的不是字母,那么继续移动到下一个. Java Solution: Runtime beats ...
- 发现所有的字都被加上了 <font> 标签,导致样式全部错乱
经检查,发现我的浏览器默认打开了翻译软件!!!!!!!