方法覆写(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(方法的覆写)的更多相关文章

  1. JAVA中继承时方法的重载(overload)与重写/覆写(override)

    JAVA继承时方法的重载(overload)与重写/覆写(override) 重载-Override 函数的方法参数个数或类型不一致,称为方法的重载. 从含义上说,只要求参数的个数或参数的类型不一致就 ...

  2. Java中方法的覆写

    所谓方法的覆写override就是子类定义了与父类中同名的方法,但是在方法覆写时必须考虑权限,即被子类覆写的方法不能拥有比父类方法更加严格的访问权限. 修饰符分别为public.protected.d ...

  3. JavaSE复习日记 : 继承关系和super关键字以及继承关系中方法的覆写

    /* * 类的继承和super关键字 * * 软件开发的三大目的: * 可拓展性; * 可维护性; * 可重用性; * * 这里单说下可重用性这一项: * 为了代码复用,复用方式有: * 函数的调用复 ...

  4. [改善Java代码]覆写equals方法必须覆写hashCode方法

    覆写equals方法必须覆写hashCode方法,这条规则基本上每个Javaer都知道,这也是JDK API上反复说明的,不过为什么要这样做呢?这两个方法之间有什么关系呢?本建议就来解释该问题,我们先 ...

  5. JAVA面对对象(二)——继承、方法的覆写

    1.继承就是基于已存在的类构造一个新类,继承已存在的类就能复用类的方法和属性,并且能够添加新的方法和属性.也就是子类和父类 2.一个父类可以拥有多个子类,一个子类只允许有一个父类 3.用extends ...

  6. 菜鸡的Java笔记 第二十 - java 方法的覆写

    1.方法的覆写    当子类定义了与父类中的完全一样的方法时(方法名称,参数类型以及个数,返回值类型)这样的操作就称为方法的覆写    范例:观察方法的覆写 class A{ public void ...

  7. 千万不要误用 java 中的 HashCode 方法

    刚才debug追堆栈的时候发现一个很奇怪的问题 我用IE8和Google的浏览器访问同一个地址 Action的 scope="session" 也设置了 而且两个浏览器提交的参数m ...

  8. Java中的native方法

    博客引用地址:Java中的native方法 今天花了两个小时把一份关于什么是Native Method的英文文章好好了读了一遍,以下是我依据原文的理解. 一. 什么是Native Method 简单地 ...

  9. java中构造方法和方法super/this超类与子类中初始化顺序

    java中构造方法和方法全面解析 我相信大多说人都对构造方法.方法不陌生,而且很了解,但我也相信有很多像我这样的没有一个很好很清晰很全面的认识,今天就把它整理如下,希望能给大家带来点方便与帮助,也希望 ...

随机推荐

  1. 10.3andXE7的DEVExpress18.2.1记录备查

    记录备查: win10 DEVExpress18.2.1用DevExpressVCL一键编译安装工具_v10.3.2 - 2018-12-12.exe(包括help,备份...升级系统不用重新安装控件 ...

  2. 特种部队(codevs 1427)

    题目描述 Description 某特种部队接到一个任务,需要潜入一个仓库.该部队士兵分为两路,第一路士兵已经在正面牵制住了敌人,第二路士兵正在悄悄地从后方秘密潜入敌人的仓库.当他们到达仓库时候,发现 ...

  3. Proxy Server代理服务器(轉載)

    宽带IP城域网开通以来,单位连上了宽带网,10M的带宽让我们感受到了宽带的魅力.电信只提供7个IP地址,对任何一个单位来说都太少了,常用的解决办法是使用代理服务器.微软的MS Proxy Server ...

  4. iOS8開始默认语言有变化

    [问题] 測试组发现APP在iOS8及以上系统设备上,语言设置为我们不支持的小语种时.APP没有使用默认的英文,而是选择了上一次设置的语言. [分析] 经过研究发现,在iOS8系统開始,在设备语言设置 ...

  5. 开发汉澳sinox64位,对接汉澳矩阵电脑

    汉澳矩阵电脑刚刚不久前提出,即使全然设计出了汉澳矩阵电脑线路图,要在上面执行操作系统必须有矩阵操作系统. 汉澳sinox64位操作系统并非矩阵操作系统,仅仅是更为接近. 汉澳矩阵电脑假设插有16个矩阵 ...

  6. Wincc操作数据库SQLSERVER

     WINCC写数据库 在WINCC的图形编辑器中,在输入域的属性中.选择事件.再选择键盘的释放动作,在动作代码框中写下例如以下代码: Dim conn,rs Dim strsql Dim a a=HM ...

  7. Android开发之ListView实现不同品种分类分隔栏的效果(非ExpandableListView实现)

    我们有时候会遇到这么一个情况.就是我在一个ListView里面须要显示的东西事实上是有种类之分的.比方我要分冬天,夏天.秋天.春天,然后在这每一个季节以下再去载入各自的条目数据. 还有,比方我们的通讯 ...

  8. cc2540 usbdongle 安装驱动失败的终极解决方法 【原创,多图】

    Ghost winxp win7系统安装CC2540 usbdongle CDC驱动程序 [重要提示] 因为非常多朋友使用Ghost系统.导致安装cdc驱动时安装不成功,出现 "INF中的服 ...

  9. hdu5371 最长回文子串变形(Manacher算法)

    pid=5371">http://acm.hdu.edu.cn/showproblem.php? pid=5371 Problem Description Hotaru Ichijou ...

  10. U4687 不无聊的序列

    U4687 不无聊的序列 0通过 85提交 题目提供者飞翔 标签 难度尚无评定 提交 最新讨论 暂时没有讨论 题目背景 如果一个序列的任意一个连续的子序列中没有只出现一次的元素,辣么kkk就认为这个序 ...