Java-方法重载

方法重载:在同一个类的内部,方法名相同,参数不同
参数不同:参数的类型,顺序(类型),个数不同 跟参数名字无关

class Demo{
    void show(){System.out.println("你好");}
    void show(int a){System.out.println("你好");}
    void show(double a){System.out.println("你好");}
    void show(int a,int b){System.out.println("你好");}
    void show(int a,double b){System.out.println("你好");}
    void show(double a,int b){System.out.println("你好");}
//  void show(int b,int a){System.out.println("你好");}//不是重载,类型,个数,顺序一致
//  void show(int b){System.out.println("你好");}//不是方法重载,参数一致
}

方法重载好处:方便用户调用程序

System.out.println("你好");
System.out.println(12);
System.out.println(12.1f);
System.out.println('你');
System.out.println(true);

println:sun写方法,体现方法重载的好处,我们可以通过println输出不同类型的数据,对于我们,只需要记住一个println的名字,就可以输出任何的数据。

方法重载属于多态的一种
面向对象编程3大编程思想:封装,继承,多态
多态:事物在不同的情况,显示不同的特性。
eg:很像变色龙
println方法,根据不同的参数,内部调用同名的不同的方法,输出不同类型的数据,体现了多态

public class Test1 {
    public static void main(String[] args) {
        //设计一个计算器类,实现加法的操作,通过方法重载的方式,让类,实现不同数据(int,double)的加法运算
        //方法重载:同一个类的内部,方法名相同,参数不同
        //一个类内部,多个同名的方法,调用的时候,根据参数的不同,调用不同的方法
        //方法重载的好处:调用方法很方便,只要记住一个名字,就可以实现多个不同的功能
        AddUtil a=new AddUtil();
        int sum1=a.add(12, 23);
        System.out.println("两个整数相加"+sum1);
        double sum2=a.add(12.1, 29.5);
        System.out.println("两个浮点数相加"+sum2);
    }
}
class AddUtil{
    int add(int num1,int num2){
        return num1+num2;
    }
    double add(double num1,double num2){
        return num1+num2;
    }
    double add(int num1,double num2){
        return num1+num2;
    }
    double add(double num1,int num2){
        return num1+num2;
    }
}

返回值跟方法重载没有任何的关系,方法重载只跟参数有关(一个类内部,方法名相同,参数不同)
构造方法支持方法重载:当创建对象(new)根据构造方法参数不同,调用不同的构造方法

public class Test1 {
    public static void main(String[] args) {
        //构造方法重载:一个类可以写多个不同的构造方法,参数不同
        //创建对象的时候,根据参数的不同来调用不同的构造方法
        User user=new User("张三");
        user.show();
        User user1=new User("李四","教师",25);
        user1.show();
        User user2=new User(2,"杨洋","演员",25,1000000,"北京");
        user2.show();
    }
}
//设计一个用户类(User)
//属性:编号,名字,职位,年龄,工资,地址
//构造方法:1.带名字的构造方法
//       2.带名字,职位,年龄的构造方法
//       3.带所有属性的构造方法
//方法:show:显示用户的所有属性
class User{
    int no;
    String name;
    String job;
    int age;
    double salary;
    String adress;
    User(String name){
        this.name=name;
    }
    User(String name,String job,int age){
        this.name=name;
        this.job=job;
        this.age=age;
    }
    User(int no,String name,String job,int age,double salary,String adress){
        this.no=no;
        this.name=name;
        this.job=job;
        this.age=age;
        this.salary=salary;
        this.adress=adress;
    }
    void show(){
        System.out.println(no+","+name+","+job+","+age+","+salary+","+adress);
    }
}

输出结果:

0,张三,null,0,0.0,null
0,李四,教师,25,0.0,null
2,杨洋,演员,25,1000000.0,北京

public class Test1 {
    public static void main(String[] args) {
        Cuboid cuboid=new Cuboid(12.5,30,6);
        cuboid.volume();
        Cuboid cuboid2=new Cuboid(6);
        cuboid2.volume();
    }
}
//设计一个长方体类,有长,宽,高
//构造方法2个:长方体:长,宽,高三个参数
//          正方体:边长一个参数
//方法:求体积
//创建一个长方体的对象求体积
//创建一个正方体对象求体积
class Cuboid{
    double length;
    double width;
    double height;
    Cuboid(double length,double width,double height){
        this.length=length;
        this.width=width;
        this.height=height;
    }
    Cuboid(double length){
//        this.length=length;
//        this.width=length;
//        this.height=length;
//this(参数):写在重载的构造方法的第一行,可以去调用其他构造方法(知道)
        this(length,length,length);//调用Cuboid(double length,double width,...)
    }
    void volume(){
        double tiji=length*width*height;
        System.out.println(tiji);
    }
}

原文地址:https://www.cnblogs.com/peiya/p/12689900.html