• Java中的overload(方法的覆写)


    方法覆写(overload)与方法的重载非常相似,它在 Java的继承中也有很重要的应用。

     

    写程序可能会碰到下面的情况,在父类中已经实现的方法可能不够精确,不能满足子类

    的需求。例如在前面的 Animal类中,breath方法就过于简单,对于鱼类动物是用腮呼吸的,

    而对于哺乳动物则是用肺呼吸的,如何实现呢,Java提供的方法覆写就是解决这方面的问题。

    在下面的程序中首先定义了一个父类 Animal,然后定义 Animal的  3个子类  TigerFish

    Dog,在父类中提供了 3个方法  eatbreathsleep,在两个子类 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关键字主要有以下两个用途:

    在子类构造函数中调用父类构造函数。

    在子类中调用父类的方法。

     

  • 相关阅读:
    Oracle 按一行里某个字段里的值分割成多行进行展示
    Property or method "openPageOffice" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by
    SpringBoot 项目启动 Failed to convert value of type 'java.lang.String' to required type 'cn.com.goldenwater.dcproj.dao.TacPageOfficePblmListDao';
    Maven 设置阿里镜像
    JS 日期格式化,留作参考
    JS 过滤数组里对象的某个属性
    原生JS实现简单富文本编辑器2
    Chrome控制台使用详解
    android权限(permission)大全
    不借助第三方网站四步实现手机网站转安卓APP
  • 原文地址:https://www.cnblogs.com/john69-/p/5403144.html
Copyright © 2020-2023  润新知