Java的Overriding重写-笔记

来源:互联网 发布:网络自由与秩序申论 编辑:程序博客网 时间:2024/06/06 01:25

Java - Overriding重写

本文参考这里

区别:

  • overload:重载,名相同/参数不同(类型/数目),即函数签名不相同。重载发生在同一个类内的两个或多个方法间,平行的关系。
  • override:重写、也译覆盖,函数签名相同。重写发生在父与子类之间,层次的关系。

子类从父类中继承到一个final方法,则可以在子类中对该方法进行重写(overriding)。

例子1:

class Animal{    public void move()    {        System.out.println("Animals-move");    }}class Dog extends Animal{    public void move()  // 重写overriding    {        System.out.println("Dogs-move");    }}Animal a = new Animal(); // Animal reference and objectAnimal b = new Dog();    // Animal reference but Dog objecta.move(); // runs the method in Animal classb.move(); // Runs the method in Dog class// 运行结果:Animals-moveDogs-move

例子2:

// MainTest.javaclass Animal{    void say()    {        System.out.println("animal say");    }}class Dog extends Animal{    @Override    void say()    {        System.out.println("dog say");    }}class Cat extends Animal{    @Override    void say()    {        System.out.println("cat say");    }    // for overload test    void move()    {        System.out.println("cat move");    }    void move(int i)    {        System.out.println("cat another move");    }}public class MainTest{    public static void main(String[] args)    {        Animal a = new Animal();        Animal b = new Dog();        Cat c = new Cat();        // overriding, 多态        a.say();        b.say();        c.say();        // overload        c.move();        c.move(1);    }}// 运行结果:animal saydog saycat saycat movecat another move

方法重写的规则(rules)

super 关键字

调用父类版本的方法 When invoking a superclass version of an overridden method the super keyword is used.


0 0