构造方法和对属性进行私有化(setter方法)都是对数据初始化的一种手段,通常情况下,二者都会保留。构造方法的名称与类名相同,没有返回值声明(比如void)。
class Person{
int age;
String name;
//默认构造方法
public Person(){
}
}
方法的重载就是在一个类中可以有多个方法名相同而传的属性不同的构造方法。在编程中通常保留默认构造方法,如果类中没有构造方法,那么系统会有一个默认的构造方法,反之,如果声明了构造方法,那么默认的构造方法会消失。
class Person{
int age;
String name;
//默认构造方法
public Person(){
}
public Person(int age){
this.age =age;
System.out.println("这是只有一个参数的构造方法");
}
public Person(int age,String name){
this.age =age;
this.name=name;
System.out.println("这是有两个参数的构造方法");
}
//属性封装
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
构造方法之间可以进行互相调用,但是必须有出口,且调用语句必须在构造方法的第一句。也就是说,构造方法之间的调用只能调用一次,但是不同的构造方法之间可以进行互相调用。
/**
* Created by 25037 on 2021/11/4.
*/
public class test {
public static void main(String[] args) {
//只有一个参数的构造方法调用有两个参数的
Person person = new Person(7);
}
}
class Person{
int age;
String name;
//默认构造方法
public Person(){
}
public Person(int age){
//只有一个参数的构造方法调用有两个参数的
this(7,"LIHUA");
this.age =age;
System.out.println("这是只有一个参数的构造方法");
}
public Person(int age,String name){
this.age =age;
this.name=name;
System.out.println("这是有两个参数的构造方法");
}
//属性封装
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
执行结果: