方法覆写(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. Mongodb学习总结(2)——MongoDB与MySQL区别及其使用场景对比

    对于只有SQL背景的人来说,想要深入研究NoSQL似乎是一个艰巨的任务,MySQL与MongoDB都是开源常用数据库,但是MySQL是传统的关系型数据库,MongoDB则是非关系型数据库,也叫文档型数 ...

  2. https://gitee.com/tomsun28/bootshiro-------需要研究的项目

    https://gitee.com/tomsun28/bootshiro-------需要研究的项目

  3. 阿里maven仓库配置

    修改conf文件夹下的settings.xml文件,添加如下镜像配置: <mirrors> <mirror> <id>alimaven</id> < ...

  4. 关于使用CELERY的一点心得

    使用也有大半年了.稳定性没话说啊. 但有一个坑,是我以前没注意的,记录下来. 就是本来一个任务是可以异步并行执行的..但如何需要CELERY的执行结果来作判断的话,就会变得异步串行的. 这要值得注意. ...

  5. HDU——1787 GCD Again

    题意: 在一次acm竞赛之后,你花了一些时间去思考和尝试解决那些未解决的问题吗? 不知道?哦,当你想成为“大牛”的时候,你就必须这样做. 现在你会发现,这个问题是如此熟悉: 两个正整数a和b的最大GC ...

  6. 定义SAP Portal Url别名

    Defining URL Aliases Use A URL alias is the part of the portal URL after the section that specifies ...

  7. Windows Server下把BAT批处理注册成服务在后台运行且注销后能正常运行

    批处理有如下特点: 1.登录到当前窗口运行时,如果关闭控制台会连同启动的程序一起关闭. 2.如果是以start /b的形式启动,那么同样也是在控制台关闭后者注销当前窗口也会一起关闭. 3.如果以vbs ...

  8. Performance Tunning - OCP

    This artical is forcused on Oracle 11g Release 2.  It is an summary from the OCP documentation. The ...

  9. 安装 openCV 2.4.10

    近期试验了一下 ubuntu 12.06 (x86) 安装.openCV 安装脚本 最好的文章是 https://help.ubuntu.com/community/OpenCV. 它提供一个脚本( ...

  10. Android面试题1

    1.Android中intent的是? 答:实现界面间的切换,能够包括动作和动作数据.连接四大组件的纽带. 2.SAX解析xml文件的长处的是? 答:不用事先调入整个文档,占用资源少 3.在andro ...