重载和重写区别

重载(Overloading)

是指在同一个类中,可以定义多个具有相同名称但参数列表不同的方法。它允许使用相同的方法名,但根据不同的参数个数、类型或顺序,执行不同的操作。

重载方法通过方法签名(包括方法名和参数列表)来进行识别和区分。

重载的特点:

  • 同一个类中的方法名称相同,但参数列表不同
  • 重载方法可以有不同的返回类型。
  • 重载方法通过方法签名区分和识别。

重载示例(Java):

通过方法的重载,可以根据传入不同的参数执行不同的操作。

public class Calculator {

   //定义add 方法,需要传入int a,b 两个参数
    public int add(int a, int b) {
        return a + b;
    }
   
    //定义add 方法,需要传入double a,b 两个参数 
    public double add(double a, double b) {
        return a + b;
    }

    //定义add 方法,需要传入int a,b,c 三个参数
    public int add(int a, int b, int c) {
        return a + b + c;
    }
}

public static void main(String[] args) {  
        Calculator calculator= new Calculator ();  
        calculator.add(1,2); // 调用2个int 型参数方法  
        calculator.add(0.5,0.6); // 调用带2个double型参数的方法  
        calculator.add(1,2,3); // 调用带三个字符串参数的方法  
    }  

重写(Overriding)

指在继承关系中,子类可以重新定义父类中的方法。子类重写的方法具有相同的名称、参数列表和返回类型,但可能有不同的实现。

通过方法的重写,可以实现多态性,即在调用方法时,根据对象的实际类型来确定执行哪个方法。

重写的特点:

  • 子类中的方法与父类中的方法具有相同的名称、参数列表和返回类型
  • 重写方法提供了不同的实现,覆盖了父类中的方法。
  • 子类对象调用该方法时,会优先执行子类中的方法。

重写示例(Java):

//父类Animal定义了一个makeSound方法
public class Animal {
    public void makeSound() {
        System.out.println("Animal makes sound");
    }
}

public class Dog extends Animal {
   //子类Dog重写了makeSound方法,提供了不同的实现
    @Override     
    public void makeSound() {
        System.out.println("Dog barks");
    }
}

public static void main(String[] args) {  
        Animal animal1 = new Animal ();  
        animal1.display(); // 输出:父类的display方法  
  
        Dog Dogs= new Dog ();  
        Dogs.display(); // 输出:子类的display方法  
      
    }  

区别
  • 重载(Overloading)是指在同一个类中定义多个方法,方法名称相同但参数列表不同,用于提供不同的操作方式。
  • 重写(Overriding)是指在继承关系中,子类重新定义父类中的方法,使得子类对象在调用该方法时执行不同的实现。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值