构造方法相关知识点:
一、构造方法的格式:
修饰符构造方法名(参数列表){}
二、构造方法的体现:
1、每个类都有构造方法,构造方法不写也有,系统会自动添加,手写编译了就不会自动添加了
2、构造方法在new的时候自动执行
3、构造方法没有返回值类型。也不需要写返回值
4、构造方法名称必须和类型保持一致。
三、构造方法的细节:
1、一个类中可以有多个构造方法,多个构造方法是以重载的形式存在的
2、构造方法是可以被private修饰的,作用:其他程序无法创建该类的对象。
可以用两种方式调用构造方法:
private int age;
private String name;
public Person() { //无参的构造方法
}
public Person(String name,int age) { //有参的构造方法
this. name=name;
this. age=age;
...//此处省略set和get方法
}
1、调用无参的构造方法
Person p1=new Person();
p1.setAge(18);
p1.setNAME("张三");
2、调用有参的构造方法Person p2= new Person("张三",18);
四、构造方法和一般方法的区别:
构造方法在对象创建时就执行了,而且只执行一次。
一般方法是在对象创建后,需要使用时才被对象调用,并可以被多次调用。
五、this关键字调用构造方法:(空参的构造方法name和age 赋值)
构造方法调用格式:this(参数列表);(必须放在构造方法的第一行)
成员变量和局部变量同名问题:可以在成员变量名前面加上this.来区别成员变量和局部变量
例如:
private int age;
private String name;
public Person() { //无参的构造方法
this ("李四",20); //调用有参的构造方法
}
public Person(String name,int age) { //有参的构造方法
this. name=name;
this. age=age;
test测试类中:
Person p1=new Person();//就会输出李四和20
六、super关键字
(1)子父类构造方法的调用
格式:
调用本类中的构造方法:this(实参列表);
调用父类中的空参数构造方法:super();
调用父类中的有参数构造方法:super(实参列表);
注意点:
1、如果两个类是继承关系,子类中的构造方法需要访问父类中的构造方法,同时,子类的构造方法的第一行有一句隐式的super()。
原因:子类继承父类中的内容,在子类初始化时,必须先到父类中去执行父类的初始化动作,这样可使用父类中的内容,当当父类中没有空参数构造方法时,子类的构造方法必须有显示的super语句,指定要访问的父类有参数构造方法。
2、this()或者super()只能定义在构造方法的第一行两者二选其一,只要是构造方法默认第一行都是super()。
3、如果父类有多个构造方法,子类任意调用一个就可以。
4、构造方法不能继承也不能重写,super()也必须在构造方法第一行
小结论:无论如何,子类的所有构造方法直接或者间接调用到父类的构造方法,子类的构造方法什么都不写,默认的构造方法第一行是 super()。