zoukankan      html  css  js  c++  java
  • 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类的方法
    
      }
    }
    
    五、重载
    重载是在一个类里面,方法名相同,而参数不同,返回类型可以相同可以不同
    每个重载的方法(构造函数)都必须有独一无二的参数类型列表
    构造器的重载用的比较多
    重载规则:
    被重载的方法必须改变参数列表,可以改变返回类型,可以改变访问修饰符
    
    六、总结
    方法的重载:定义了多个方法名相同,参数数量不同/相同、类型和次序不同
    方法的重写:子类存在方法与父类的方法的名字相同,参数的个数和类型一致,返回值也一样的方法
    
    
    七、重载就是同样的一个方法能够根据输入数据的不同,做出不同的处理
    重写就是当子类继承自父类的相同方法,输入数据一样,但要做出有别于父类的响应时,你就要覆盖父类方法
  • 相关阅读:
    线程同步之条件变量使用手记
    如何实现文件增量同步——算法
    javascript 复习笔记
    cocos2dx 多图层点击事件及管理相关问题记录
    cocos2dx 2.1.1 jsbinding 游戏帧数下降问题记录
    cocos2dx jsb + cocosbuilder 编译到安卓下问题处理(待续)
    cocos2dxjsb及Cocosbuilder使用相关问题处理记录
    cocos2dx jsb 的本地存储
    cocos2dxjsb 跨语言调用及第三方集成 过程记录
    cocos2dx 2.1.1 升级2.1.3版本 记录
  • 原文地址:https://www.cnblogs.com/xiaoshubass/p/13110957.html
Copyright © 2011-2022 走看看