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类的方法

  }
}

五、重载
重载是在一个类里面,方法名相同,而参数不同,返回类型可以相同可以不同
每个重载的方法(构造函数)都必须有独一无二的参数类型列表
构造器的重载用的比较多
重载规则:
被重载的方法必须改变参数列表,可以改变返回类型,可以改变访问修饰符

六、总结
方法的重载:定义了多个方法名相同,参数数量不同/相同、类型和次序不同
方法的重写:子类存在方法与父类的方法的名字相同,参数的个数和类型一致,返回值也一样的方法


七、重载就是同样的一个方法能够根据输入数据的不同,做出不同的处理
重写就是当子类继承自父类的相同方法,输入数据一样,但要做出有别于父类的响应时,你就要覆盖父类方法
原文地址:https://www.cnblogs.com/xiaoshubass/p/13110957.html