PART1:构造方法
A:构造方法的作用
- 在创建一个类的实例时,就可以给他的私有字段赋初始值;
- 简化我们为类字段(也叫成员变量)赋值的代码。
B:构造方法的特点
- 该方法一定要与类同名;
- 该方法没有返回值(void也不行);
- 该方法不能手工调用;
- 一个类可能没有构造方法(隐式无参的构造方法),也可以有多个构造方法,他们之间构成重载关系;
- 如果我们定义了有参数的构造方法的话,就会屏蔽掉系统无参数的构造方法;
- 构造方法不可被继承。
构造方法代码示例:
class Dog{
public int age;
public String name;
public Dog(int age, String name){ //带参数的构造方法
this.age = age;
this.name = name;
}
public Dog(){ //无参数的构造方法
}
}
构造方法测试代码示例:
public class DogTest{
public static void main(String [] args){
Dog dog1 = new Dog(); //调用无参数的构造方法
//若仅写了带参数的构造方法,则无法通过此操作创造实例对象
Dog dog2 = new Dog(7,"bage"); //调用带参数的构造方法
}
}
PART2:重载
A:重载的概述
可以给予不同的初始条件(参数类型或者参数个数)来处理相同的事情。
有些类有多个构造方法。例如可以构造一个如下的空的对象:
Dog dog1 = new Dog();
或者,可以指定一个初始字符串:
Dog dog2 = new Dog("something");
这种特征就叫做重载。如果多个方法有相同的名字、不同的参数(参数个数不同或者类型不同),便产生了重载。编译器会根据是否传入参数以及传入参数的个数和类型进行匹配挑选出相应的方法。如果编译器找不到相应的方法,就会产生编译错误。
B:重载的特点:
- 一个类中存在两以上同名方法;
- 多个同名方法的参数(参数的数目或者参数的类型组合)必须不同;
- 返回值不能作为两个方法是否构成重载的依据。
重载代码示例:
/**
* 重载:
* 传入不同的参数,都可以实现相加的操作
* 使代码更智能
*/
public class Add{
public int add(int a,int b){
.....
}
public int add(int a,float b){
.....
}
public double add(int a,int b){ //和第一个方法存在冲突,不符合重载
..... //例如 Add a = new Add(); a.add(10,10) 调用的到底是谁???
}
public double add(float a,int b){
.....
}
public int add(int b,int a){ //和第一个方法存在冲突,不符合重载
.....
}
}