• 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关键字主要有以下两个用途:

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

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

     

  • 相关阅读:
    .Net反编译实战
    PHP Yii框架开发——组织架构网站重构
    JS数据绑定模板artTemplate试用
    C# LDAP 管理(创建新用户)
    Ajax跨域请求数据实例(JSOPN方式)
    【AWK】:常用总结
    【Spark调优】:RDD持久化策略
    【ElasticSearch】:QueryDSL
    【ElasticSearch】:Mapping相关
    【ElasticSearch】:索引Index、文档Document、字段Field
  • 原文地址:https://www.cnblogs.com/john69-/p/5403144.html
Copyright © 2020-2023  润新知