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); } }