• Java知识25 重写Override和重载Overload (重载需要巩固)【多测师】


    一、重写:子类对父类的允许访问的方法的实现过程进行重新编写,返回值和形参都不能改变。子类可以根据需要实现父类的方法
    重写方法不能抛出新的检查异常,只能抛出子类异常
    面向对象可以重写任何现有的方法
    实例如下:
    class Animal {
      public void move() {
       System.out.println("动物可以移动");
      }
    }
    
    class Dog extends Animal {
      public void move() {
       System.out.println("狗可以跑和走");
      }
    }
    方法调用:
    public class TestDog {
      public static void main(String args[]) {
       Animal a = new Animal(); // Animal 对象
       Animal b = new Dog(); // Dog 对象
    
       a.move();// 执行 Animal 类的方法
    
       b.move();// 执行 Dog 类的方法
      }
    }
    运行结果:
    动物可以移动
    狗可以跑和走
    
    二、分析上面实例
    尽管b属于Animal类型 但它运行的是Dog类的move方法
    所以上面例子能编译成功 因为Animal类中存在move方法 运行的是特定对象的方法
    Dog子类当中定义一个bark的方法
    在实例化
        Animal a = new Animal(); // Animal 对象
        Animal b = new Dog(); // Dog 对象
    
        a.move();// 执行 Animal 类的方法
    
        b.move();// 执行 Dog 类的方法
        b.bark();
    这时候程序会抛出一个编译错误  因为b的引用类型Animal没有bark方法
    
    三、方法重写规则
    参数列表必须完全和被重写方法相同
    返回类型须与被重写方法的返回类型相同
    访问权限必须比父类被重写的方法的访问权限高
    父类的成员方法只能被子类重写
    构造方法不能被重写
    
    四、super关键字的使用
    当需要在子类中调用父类的被重写方法时,要使用super关键字
    实例如下:
    class Animal {
      public void move() {
       System.out.println("动物可以移动");
      }
    }
    
    class Dog extends Animal {
      public void move() {
       super.move(); // 应用super类的方法
       System.out.println("狗可以跑和走");
      }
    }
    
    调用:
    public class TestDog {
      public static void main(String args[]) {
    
       Animal b = new Dog(); // Dog 对象
       b.move(); // 执行 Dog类的方法
    
      }
    }
    
    五、重载
    重载是在一个类里面,方法名相同,而参数不同,返回类型可以相同可以不同
    每个重载的方法(构造函数)都必须有独一无二的参数类型列表
    构造器的重载用的比较多
    重载规则:
    被重载的方法必须改变参数列表,可以改变返回类型,可以改变访问修饰符
    
    六、总结
    方法的重载:定义了多个方法名相同,参数数量不同/相同、类型和次序不同
    方法的重写:子类存在方法与父类的方法的名字相同,参数的个数和类型一致,返回值也一样的方法
    
    
    七、重载就是同样的一个方法能够根据输入数据的不同,做出不同的处理
    重写就是当子类继承自父类的相同方法,输入数据一样,但要做出有别于父类的响应时,你就要覆盖父类方法
  • 相关阅读:
    Shiro使用Redis作存储之后更新Session失败的问题
    安装JDK 9 时出现“正在进行另一Java安装”
    Rancher——新一代智障Docker调度系统
    使用Spring STOMP时ChannelInterceptor无法获取用户信息
    Docker生存要点
    多线程编程几个误区
    shiro中JdbcRealm使用salt的问题
    通过ProxyServlet实现可编程的反向代理
    关于之前的博客《SharePoint无代码工作流设计开发实例——交通费报销流程(三) 》的一些问题的解答
    SharePoint无代码工作流设计开发实例——交通费报销流程(三)
  • 原文地址:https://www.cnblogs.com/xiaoshubass/p/13110957.html
Copyright © 2020-2023  润新知