Java 方法和方法重载
一、无参构造
每创建一个类,系统会自动给这个类添加一个无参构造方法,并且是隐藏的
(1)构造方法是用来创建对象的
(2)构造方法的名称与类名相同
(3)构造方法没有返回值,void也不写
(4)当你在类中自定义了其它有参构造方法后,默认的无参构造方法会被覆盖,如果你还需要使用无参构造方法,就需要自己手动添加一个无参构造方法
public class HelloWorld {
public static void main(String[] args) {
System.out.println("hello world");
}
}
反编译:
import java.io.PrintStream;
public class HelloWorld
{
public HelloWorld()
{
}
public static void main(String args[])
{
System.out.println("hello world");
}
}
可以发现java在编译时,会自动加上隐藏的无参构造方法。
二、有参构造
public class Person {
//定义属性
String name;
int age;
char gender;
double height;
double weight;
String phoneNumber;
String address;
String hobby;
String country;
String job;
String email;
//定义一个有参构造方法
public Person(String name,int age,char gender,double height,double weight,String phoneNumber,String address,String hobby,String country,String job,String email){
//this表示当前对象。一会谁调用此构造 方法创建对象,this就表示创建的这个对象
this.name = name;
this.age = age;
this.gender =gender;
this.height = height;
this.weight = weight;
this.phoneNumber=phoneNumber;
this.address = address;
this.hobby = hobby;
this.country = country;
this.job = job;
this.email = email;
}
// 定义有参构造后,系统默认赠送的无参构造会被替代,需根据需求重写一遍无参构造(一般写了有参构造后都要补上无参构造)
public Person() {}
}
三、方法重载
1. 定义
方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数类型或参数个数。
public class NumSum{
public int sum(int a,int b) {
return a + b;
}
public int sum(int a,int b,int c) {
return a + b + c;
}
public double sum(double a, double b) {
return a + b;
}
public double sum(int a ,double b) {
return a + b;
}
public double sum(double a, int b) {
return a + b;
}
}
2. 特点
① 在同一个类中。
② 方法名相同。
③ 参数列表不同(参数顺序、参数类型、参数个数不同)。
④ 方法的返回值不能作为判断方法之间是否构成重载的依据(与方法的返回类型和访问修饰符无关)。
3. 调用
通过对象直接调用并传递参数,系统会根据参数类型自动匹配相应的方法。
public class NumSumTest{
NumSum numSum = new numSum();
int sum1 = numSum.sum(1, 2);
int sum2 = numSum.sum(1, 2, 3);
double sum3 = numSum.sum(1.0, 2.0);
double sum3 = numSum.sum(1, 2.0);
double sum3 = numSum.sum(1.0, 2);
}
4.优点
方法重载其实是对原有方法的一种升级,可以根据参数的不同,采用不同的实现方法,而且不需要编写多个名称,简化了类调用方法的代码。