方法重载与重写、可变参数

一、方法重载

  1. 方法重载的基本介绍
    java中允许同一个类中,多个同名方法的存在,但要求形参列表不一致。
  2. 方法重载的好处
      1. 减轻了起名的麻烦
      1. 减轻了记名的麻烦
  3. 举例
    • 比如:System.out.println(),它就是一个重载方法,你可以输出很多不同的数据,out是PrintStream类型的对象。

代码:

public class overLoad01 {
    public static void main(String[] args) {
        System.out.println(100);//100
        System.out.println("你好");//你好
        System.out.println(1.1);//1.1
    }
}

快速入门:
方法:calculate
calculate(int n1,int n2)//    两个int的和
calculate(int n1,double n2)//    一个int和一个double的和
calculate(double n1,int n2)//    一个double和一个int的和
calculate(int n1,int n2,int n3)//    三个int的和

代码:

public class overLoad02 {
    public static void main(String[] args) {
        MyCalculate myCalculate = new MyCalculate();
        System.out.println(myCalculate.calculate(10,20));
        System.out.println(myCalculate.calculate(10,3.5));
        System.out.println(myCalculate.calculate(9.4,10));
        System.out.println(myCalculate.calculate(10,3,5));
    }
}
class MyCalculate{
//    下面四个方法构成方法重载
//    两个int的和
    public int calculate(int n1,int n2){
        System.out.println("两个int和");
        return n1+n2;
    }
//    一个int和一个double的和
    public double calculate(int n1,double n2){
        System.out.println("一个int和一个double和");
        return n1+n2;
    }
//    一个double和一个int的和
    public double calculate(double n1,int n2){
        System.out.println("一个double和一个int");
        return n1+n2;
    }
//    三个int的和
    public int calculate(int n1,int n2,int n3){
        System.out.println("三个int和");
        return n1+n2+n3;
    }
}

运行结果:

两个int30
一个int和一个double13.5
一个double和一个int
19.4
三个int18

  1. 方法重载的注意事项和细节
      1. 方法名:必须相同
      1. 形参列表:(形参的类型或者它的个数或者它的顺序,至少有一样不同)
      1. 返回类型:无要求

二、方法重写

  1. 子类中出现与父类一模一样的方法时(返回值类型,方法名和参数列表都相同),会出现覆盖效果,也称为重写或者复写。声明不变,重新实现。
  2. 方法重写的应用场景:当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法,这样,即沿袭了父类的功能,又定义了子类特有的内容
  3. 方法重写和重载的区别:
    • 方法重写:子类和父类出现了一摸一样的方法声明(方法名、参数类表、返回值类型)
    • 方法重载:在同一个类中,方法名相同,参数列表不同,与返回值无关
  4. 方法重写的注意事项:
    • 私有方法不能被重写(父类私有成员子类是不能继承的)
    • 子类方法访问权限不能更低(public > protected > default > private)
    • 父类中的静态方法不能被重写,如果子类也有相同的方法,并不是重写的父类的方法,而是将父类同名的方法隐藏了起来。

三、可变参数

  1. 基本概念:java允许将同一个类中的多个同名同功能但参数个数不同的方法,封装成一个方法。
  2. 基本语法
访问修饰符 返回类型 方法名(数据类型...形参名){
}
  1. 快速入门:类Method,方法sum【计算2个数的和,3,4,5,6…】
public class varParameter01 {
    public static void main(String[] args) {
        Method method = new Method();
        System.out.println("和="+method.sum(1,2,3,4,5));//15
        System.out.println("和="+method.sum(1,2,5));//8

    }
}

class Method{
//    可以计算两个数的和,3个数的和,4,5,...
//   1. 可以使用方法重载
//   2. 第一种太麻烦了,所以我们可以使用可变参数

//    解读:
//    1. int...表示接收的是可变参数,类型是int,即可以接收多个int参数
//    2. 使用可变参数时,可以当作数组来使用,即nums 可以当作数组
//    3. 遍历nums 求和即可
    public int sum(int... nums){
       int res=0;
       for (int i=0;i< nums.length;i++){
           res+=nums[i];
       }
       return res;
    }
}
  1. 注意事项和使用细节
      1. 可变参数的实参可以为0个或者任意个
      1. 可变参数的实参可以为数组
      1. 可变参数的本质就是数组
      1. 可变参数可以和普通类型的参数一起放在形参列表,但必须保证可变参数在参数列表的最后
      1. 一个形参列表中只有出现一个可变参数
public class VarparameterDetail {
    public static void main(String[] args) {
//        细节:可变参数的实参可以为数组
        int[] arr={1,2,3,4};
        T t = new T();
        t.f1(arr);
    }
}

class T{
    public void f1(int... nums){
        System.out.println("长度="+nums.length);
    }
//    细节:可变参数可以和普通类型的参数一起放在形参列表,
//    但必须保证可变参数在参数列表的最后
    public void f2(String str,double... nums){
        
    }
    
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值