Java基础学习-重载和重写

重写:

重写(override):也称为覆盖。在子类中把父类本身就有的方法再写一遍。【一定发生在继承上】
重写是子类对父类非静态、非private修饰,非final修饰,非构造方法等的实现过程
进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!

重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是子类能够根据需要实现父类的方法。

【方法重写的规则】

  1. 方法名称相同
  2. 返回值相同【被重写的方法返回值类型可以不同,但是必须是具有父子关系的】
  3. 参数列表相同(数据类型,个数,顺序都相同)【例如:如果父类方法被public修饰,则子类中重写该方
    法就不能声明为 protected】
  4. 子类的访问权限要大于等于父类的权限
  5. private修饰的方法不可以重写
  6. final修饰的方法叫做密封方法,不能被重写
  7. 如果被static修饰,不可重写
  8. 构造方法不能被重写【构造方法只能重载】
  9. 重写的方法, 可以使用 @Override 注解来显式指定, 有了这个注解能帮我们进行一些合法性校验。 例如不小心将方法名字拼写错了 (比如写成 aet), 那么此时编译器就会发现父类中没有 aet 方法, 就会编译报错, 提示无法构成重写
package test;
//重写eat方法
class Animal {
    public String name;
    public int age;

    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void eat() {
        System.out.println(name + " Animal::吃");
    }
}

class Dog extends Animal {
    public boolean silly;
    public String name = "hello";

    public Dog(String name,int age,boolean silly) {
        super(name,age);
        this.silly = silly;
        this.name = name;
    }

    public void eat() {
        System.out.println(name + " Dog::吃");
    }

}

public class Test2 {
    public static void main(String[] args) {
        Dog dog = new Dog("aa", 12, false);
        dog.eat();
    }
}

重载

  1. 方法名称相同
  2. 返回值不做要求
  3. 参数列表不同(数据类型,个数,顺序)
    void func(int x,int y) {
        System.out.println("func1");
    }

    void func(int x,int y,int z) {
        System.out.println("func2");
    }

重写和重载的区别

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值