方法的重载
方法(函数)
返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,….)
{ 程序代码 return 返回值;} 其中:参数类型:就是该形式参数的数据类型。返回值:方法在执行完毕后返还给调用它的程序的数据。返回值类型:函数要返回的结果的数据类型。实参:调用函数时实际传给函数形式参数的数据。形式参数:在方法被调用时用于接收外部传入的数据的变量。
方法的调用
方法的重载
方法的重载就是在同一个类中允许同时存在一个以上的同名方法,只要它们的参数个数或类型不同即可。 如:
1 public class Test { 2 public static void main(String [] args) { 3 int isum; 4 double fsum; 5 isum=add(3,5); 6 isum=add(3,5,6); 7 fsum=add(3.2,6.5); 8 } 9 public static int add(int x,int y) {10 reutrn x+y;11 }12 public static int add(int x,int y,int z) {13 return x+y+z;14 }15 public static double add(double x,double y){16 return x+y;17 }18 }
1 public class MethodOverload { 2 3 /** 4 * 定义三个重载方法并调用。方法名为mOL。 5 * 三个方法分别接收一个int参数、 6 * 两个int参数、 7 * 一个字符串参数。 8 * 分别执行平方运算并输出结果,相乘并输出结果,输出字符CallMOL串信息。 9 */10 11 public void mOL(String str){ 12 System.out.println("CallMOL:" + str);13 }14 15 public void mOL(int a, int b){16 System.out.println(a * b);17 }18 19 public void mOL(int a){20 System.out.println(a * a);21 }22 23 }
1 public class TestMethodOverload { 2 public static void main(String[] args) { 3 4 mo.mOL(5); 5 mo.mOL("abc"); 6 mo.mOL(3, 4); 7 8 } 9 }
/** * 定义三个重载方法max, * 第一个方法求两个int值中的最大值, * 第二个方法求两个double值中的最大值, * 第三个方法求三个double值中的最大值,并分别调用三个方法。 */ public int max(int a, int b) { return a > b ? a : b; } public double max(double a, double b) { return a > b ? a : b; } public double max(double a, double b, double c) { return this.max(max(a, b), c); }
public class TestMethodOverload { public static void main(String[] args) { MethodOverload mo = new MethodOverload(); System.out.println(mo.max(1.1, 3.1)); System.out.println(mo.max(1, 4, 3.1)); System.out.println(mo.max(3, 5)); } }
构造方法的重载
构造方法一般用来创建对象的同时初始化对象。如
class Person{
String name; int age; public Person(String n , int a){
name=n; age=a;
}
}
构造方法重载使得对象的创建更加灵活,方便创建各种不同的对象。
构造方法重载举例: public class Person{ public Person(String name, int age, Date d) {this(name,age);} public Person(String name, int age) {…} public Person(String name, Date d) {…} public Person(){…}}构造方法重载,参数列表必须不同构造方法重载举例
1 public class Person { 2 private String name; 3 private int age; 4 private Date birthDate; 5 public Person(String name, int age, Date d) { 6 this.name = name; 7 this.age = age; 8 this.birthDate = d; 9 }10 public Person(String name, int age) {11 this(name, age, null); //this.name=name; this.age=age; 12 //this.birthDate=null;13 }14 public Person(String name, Date d) {15 this(name, 30, d); //this.name=name; 16 this.age=30;this.birthDate=d;17 }18 public Person(String name) {19 this(name, 30); //this.name=name; this.age=30;20 }21 }
1 public class Person { 2 3 private String name; 4 private int age; 5 private String school; 6 private String major; 7 8 public Person(String n, int a, String s, String m){ 9 this(n, a, s);10 major = m;11 }12 13 public Person(String n, int a, String s){14 this(n, a);15 school = s;16 }17 18 public Person(String n, int a){19 name = n;20 age = a;21 }22 23 public String getName() {24 return name;25 }26 27 public int getAge() {28 return age;29 }30 31 public String getSchool() {32 return school;33 }34 35 public String getMajor() {36 return major;37 }38 39 public void setName(String name) {40 this.name = name;41 }42 43 public void setAge(int age) {44 this.age = age;45 }46 47 public void setSchool(String school) {48 this.school = school;49 }50 51 public void setMajor(String major) {52 this.major = major;53 } 54 }
(3)在main方法中分别调用不同的构造方法创建的对象,并输出其属性值。
Person person = new Person("xiaoye", 1, "xiaoye", "Java"); System.out.println(person.getName()); System.out.println(person.getAge()); System.out.println(person.getSchool()); System.out.println(person.getMajor());