Java重写Override和重载Overload

本文详细介绍了Java中的重写Override和重载Overload的概念。重写是子类对父类允许访问的方法进行重新编写,而重载则是在同一类中存在方法名相同但返回值类型或参数不同的多个方法。文章提到了重写的一些注意事项,例如final和static方法的特殊情况,以及访问权限的限制。同时,对比了重写和重载的区别,并指出构造方法不能被重写。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载请标明出处:http://blog.youkuaiyun.com/wu_wxc/article/details/51457528
本文出自【吴孝城的优快云博客】

重写是子类对父类中允许访问的的方法的重新编写
重载是同一类中方法名相同,但返回值类型或参数有所不同的方法的重新加载

Override(重写)

package cn.wuxiaocheng;

class Animal {
    public void eat() {
        System.out.println("动物都需要吃东西");
    }
}

class Dog extends Animal {
    // 重写父类方法
    @Override
    public void eat() {
        System.out.println("狗喜欢啃骨头");
    }
}

public class Test {

    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.eat();
    }
}

结果如图
这里写图片描述

@Override表明这个方法是重写其父类方法,没有它不会报错,但是没有它时,下面重写的方法名写错时系统不会报修。

重写的注意事项

1、声明为final的方法不能被重写
2、声明为static的方法可以被再次声明,但不能被重写
3、子类和父类在同一包中时,子类可以重写父类中除了声明为private或final的其他所有方法
4、子类和父类不在同一包中时,子类只能重写父类中声明为public或protected的非fnial方法
5、构造方法不能被重写

Overload(重载)

package cn.wuxiaocheng;

class MyOverloading {
    // 没有参数
    public void people() {
        System.out.println("没有参数");
    }

    // 参数为String
    public void people(String name) {
        System.out.println(name);
    }

    // 参数为int,返回int类型的值
    public int people(int age) {
        System.out.println(age);
        return age;
    }

    // 参数为String, int
    public void people(String name, int age) {
        System.out.println("name:" + name + "," + "age:" + age);
    }

    // 参数为int, String
    public void people(int age, String name) {
        System.out.println("age:" + age + "name:" + name);
    }
}

public class Test {

    public static void main(String[] args) {
        MyOverloading myOverloading = new MyOverloading();
        myOverloading.people();
        myOverloading.people("名字");
        myOverloading.people(20);
        myOverloading.people("名字", 20);
        myOverloading.people(20, "名字");
    }
}

结果如图
这里写图片描述

重载和重写的区别

区别点重载方法重写方法
方法名相同相同
返回值类型可以修改相同
参数参数不同或参数顺序不同相同
访问修饰符权限没有要求被重写的方法权限不得比父类严格
范围同一类中在继承中

访问权限比较

修饰符当前类同一包子孙类全可见
private
default
protected
public

其中什么都没写的就是default,有的也叫friendly

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值