方法的重载
定义:多个方法,方法名相同,使用时根据参数列表的不同区分不同方法。
条件:
- 发生在一个类中
- 方法名相同
- 参数列表不同(参数的个数、数据类型)
- 与返回值类型、权限修饰符、方法体无关
例:
public static void main(String[] args) {
Demo03 demo03 = new Demo03();
//System.out.println(demo03.plus(1, 2));
//System.out.println(demo03.plus(1, 2, 3));
demo03.plus(1.0, 2.0, 3.0);
double[] array = {1,2,3,4,5,6};
double result = demo03.plus(array);
System.out.println(result);
}
public int plus(int a, int b) {
return a + b;
}
public int plus(int a, int b, int c) {
return a + b + c;
}
public double plus(double a, double b) {
return a + b;
}
public double plus(double a, double b, double c) {
System.out.println("111");
return a + b + c;
}
//注意:可以传递独立的多个参数,也可以传递数组
public double plus(double... a) {
System.out.println("222");
double sum = 0;
for (double d : a) {
sum += d;
}
return sum;
}
//注意:无法和可变参构成重载
// public double plus(double[] a) {
// double sum = 0;
// for (double d : a) {
// sum += d;
// }
// return sum;
// }
构造方法
1.区别于普通方法
- 普通方法方法名符合驼峰命名法,构造方法方法名必须和类名一致。
- 构造方法没有返回值类型,也不能加void。
2.作用
- 用于实例化对象并初始化赋值。
- 写在new关键字的后面。
3.注意
- 如果没有手动编写构造方法,默认提供一个无参构造方法。
- 如果手动编写了有参构造方法,不会再提供无参构造方法。
- 编程规范建议我们,手写无参和有参构造。
- this关键字用于指向当前对象
例:
public class Dog {
//1.private修饰的变量,只能在本类中使用
//在外部无法随意修改变量值
private String nickname;
private String type;
private char sex;
private byte age;
public Dog() {
}
public Dog(String nickname, String type, char sex, byte age) {
//2.在有参构造内部做参数的合法校验
this.nickname = nickname.equals("吴青山") ? "吴绿山" : nickname;
this.type = type;
this.sex = sex;
this.age = age < 0 ? 0 : age;
}
}