Java笔记(8)——重载(Overload)与重写(Override)的区别

本文详细介绍了Java中的重写(Override)和重载(Overload)的概念。重写发生在子类对父类允许访问的方法进行重新实现,保持方法名、返回值和参数列表不变。重载则是在同一类中定义多个方法名相同但参数列表不同的方法。两者体现了多态性的不同方面。

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

1、重写(Override)

  重写是子类对允许访问的父类的方法进行重新编写的过程,方法名、返回值和参数列表不能变,方法中的内容可以变化。特点就是:子类可以根据自己的需要对父类的方法进行改变,定义符合自己的行为特征。

public class Person {
    public String name;
    int age;

    protected void eat(){
        System.out.println("人会吃饭。。。");
    }

    protected void getName(String name){
        this.name = name;
        System.out.println("读取Person的姓名:" + this.name);
    }

}
public class Man extends Person{
    public void eat(){
        //super.eat();
        System.out.println("男人会劳动。。。");
    }

    public void getName(String name){
        this.name = name;
        System.out.println("重写了父类的方法:" + super.name);
    }

    public void getName(String name, int age){
        this.name = name;
        this.age = age;
        System.out.println("读取Man的姓名:" + this.name + " ,age = " + this.age);
    }
}
public class TestMan {
    public static void main(String[] args) {
        Person p1 = new Person();
        Man p2 = new Man();

        p1.eat();
        p1.getName("Lily");
        p2.eat();
        p2.getName("老王");
        p2.getName("Lucy", 12);
    }
}
/*
人会吃饭。。。
读取Person的姓名:Lily
男人会劳动。。。
重写了父类的方法:老王
读取Man的姓名:Lucy ,age = 12
*/

2、重载(Overload)

  重载是在同一个类里边,可以定义多个方法名相同但参数列表必不相同并且返回值可以不相同,异常可以不同,访问修饰符可以不同的各种方法。

public class Overloading {
    public int test(){
        System.out.println("test1");
        return 1;
    }

    public void test(int a){
        System.out.println("test2");
    }

    //以下两个参数类型顺序不同
    public String test(int a,String s){
        System.out.println("test3");
        return "returntest3";
    }

    public String test(String s,int a){
        System.out.println("test4");
        return "returntest4";
    }

    public static void main(String[] args){
        Overloading o = new Overloading();
        System.out.println(o.test());
        o.test(1);
        System.out.println(o.test(1,"test3"));
        System.out.println(o.test("test4",1));
    }
}

/*
test1
1
test2
test3
returntest3
test4
returntest4

*/

3、区别

  1. 方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,则称为方法的重载(Overloading)。
  2. 方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,就称为重写(Overriding)。
  3. 方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值