有关构造方法的理解:
需要对对象的数据进行初始化,则创建一个构造方法,此方法名字和类名一样,但是没有返回值(类型和具体的值都没,但是可以写return;).构造方法是用来创建对象的,所以是不能被对象调用的,当创建(new)对象的时候,就被调用了一次。若我们没写构造方法(不管是无参的还是有参的)时,系统会默认的自动给添加个无参数的构造方法。多个构造方法是可以重载共存的,若构造方法私有(private)了的话,其他程序是无法创建该类的对象。
当在一个类中既存在构造方法,又存在普通方法时,需要调用构造方法(本类)时,则需要用this调用,尤其注意的是调用的语句需要写在第一行(因为构造方法就是对数据的初始化的,初始化的动作要最先执行)。
当子类需要调用父类的构造方法时,需要用到super()关键字,其实因JAVA中最大的父类是Object!!在每个类的构造方法的第一行都默认的存在隐式的super()语句的,但当子类同时需要调用本类的构造方法时,则必须将this()先执行,然后再在本类的方法中间接的super()完成初始化-----还是因为初始化的动作要先执行。
一、构造方法:
1、介绍:
修饰符 构造方法名(参数列表)
{
}
①、构造方法没有返回值类型, 也不需要写返回值。因为它是为构建对象的,对象创建完,方法就执行结束。
②、 构造方法名称必须和类名保持一致。
③、构造方法没有具体的返回值。
2、构造方法是专门用来创建对象的,也就是在new对象时要调用构造方法。
3、如果没有显示指定构造方法,编译会在编译时自动添加默认的构造方法(空参构造)!如果在描述类时,我们显示指定了构造方法,那么,当在编译Java源文件时,编译器就不会再给class文件中添加默认构造方法。
4、细节:
①、一个类中可以有多个构造方法,多个构造方法是以重载的形式存在的;
②、构造方法是可以被private修饰的,作用:其他程序无法创建该类的对象。
class Person { private int age; private String name; // 私有无参数的构造方法,即外界不能通过new Person();语句创建本类对象 private Person() { }
5、构造方法与普通方法的区别:
①、构造方法在对象创建时就执行了,而且只执行一次;
②、一般方法是在对象创建后,需要使用时才被对象调用,并可以被多次调用。
6、构造方法仍需要相应的set和get方法,因为对象在创建之后需要修改和访问相应的属性值时,在这时只能通过set或者get方法来操作。
二、this关键字:
1、构造方法之间的调用,可以通过this关键字来完成。只能在本类中构造方法里用,也只能调用构造方法。不能用在普通方法。
this(参数列表);
2、调用其他构造方法的语句必须定义在构造方法的第一行,原因是初始化动作要最先执行。
3、可以在成员变量名前面加上this.来区别成员变量和局部变量。
三、super关键字:
1、在创建子类对象时,父类的构造方法会先执行,因为子类中所有构造方法的第一行有默认的隐式super();语句。
2、当子类调用父类的构造方法时,用super();
3、this调用了本类其他构造方法,那么super调用父类的语句没有的,因为初始化动作要先执行。主要在构造方法中直接或者间接的调用super()就可以完成初始化。(在开始的位置写本类的,在后面的方法中的调父类的)。
4、Java体系在设计,定义了一个所有对象的父类Object。