Java的Overriding重写-笔记

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 object
Animal b = new Dog();    // Animal reference but Dog object
a.move(); // runs the method in Animal class
b.move(); // Runs the method in Dog class

// 运行结果:
Animals-move
Dogs-move

例子2:

// MainTest.java

class 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 say
dog say
cat say
cat move
cat another move

方法重写的规则(rules)

super 关键字

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值