创建两个类,一个Person类一个Test类,在Test类main方法里创建一个对象:
Person p=new Person();
new Person()就是调用了person类的构造器,每个类都有一个默认构造器,它与类名相同,默认不写也存在,写出构造器格式如下:
public Person(){}//()里面可以没有参数列表但()必须要有
修饰符有四种public、private、protected、default(不写)
成员方法的修饰符也是这四种,构造器其实是成员方法的一种
成员方法和构造器写法的区别:成员方法需要加返回类型,
方法名最好不要和构造器同名。
构造器重载:
public class Person {
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
System.out.println(this.name+this.age);
}
}
上面代码有两个Person构造器,名字相同参数列表不同就是函数重载。
如果不写原构造器public Person(){}它就不是重载了而是会把原构造器覆盖,也就是在test类中创建一个对象调用时:Person p=new Person();报错,它里面必须加参数。重载后通过往构造器里放不同的形参,执行不同的构造器。这样就可以省略代码,避免写更多的方法名。
public class Test {
public static void main(String[] args) {
Person p=new Person();
Person p1=new Person("huhu",34);
System.out.println(p);
System.out.println(p1);
}
}
以上代码可以用不同的构造器产生不同的结果。
构造器的参数类型列表不能相同。比如:
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
System.out.println(this.name+this.age);
}
public Person(String a, int b) {
super();
this.name = name;
this.age = age;
System.out.println(this.name+this.age);
}
这样会报错,所以重载必须参数列表不同。