Java之构造方法及this、super关键字

有关构造方法的理解:
  需要对对象的数据进行初始化,则创建一个构造方法,此方法名字和类名一样,但是没有返回值(类型和具体的值都没,但是可以写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。

原文地址:https://www.cnblogs.com/21-forever/p/10895739.html