{:soso_e113:}构造方法要与类名一样,既然是方法肯定可以重载,就是你说的多个构造方法。每个构造方法的第一行都有默认的super(),就是调用父类的构造方法,你不写系统自己加。一般一个类都会写两个构造方法一个有参数的,一个无参数的。
new子类对象的时候子类都会先调用父类构造方法在执行自己的构造方法
这是我今天写的一个测试类
package day16_01_collection;
class Person {
private String name;
private int age;
private String sex;
public Person() {//这是无参构造方法
super();
/*这里的super()就是调用父类构造方法
* 这里Person没有指定继承一个类,那么就默认继承Object类,因为每个类都是Object 的子类或间接子类
*/
}
public Person(String name, int age, String sex) {//这是有参数的构造方法
//super();//这个同上
this.name = name;
this.age = age;
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String toString() {
return "Person [name=" + name + ", age=" + age + ", sex=" + sex + "]";
}
public boolean equals(Object o) {
// 测试参数类型是否为Person
boolean b = o instanceof Person;
// 如果参数类型不是Person,那么就没有比较的了,直接返回false
if(!b) {
return false;
}
// 执行到这里,已经可以肯定参数是Person类型,所以可以大胆的向下转型了。
Person p = (Person)o;
return this.name.equals(p.name) && this.age == p.age && this.sex.equals(p.sex);
}
} |