Java基础知识学习08-构造方法

构造方法

在开发中经常需要在创建对象的同时明确对象的属性值,比如员工入职公司就要明确他的姓名、年龄等属性信息。

此时就需要构造方法了。

语法格式:修饰符  方法名(参数列表){ }

 注: 1、构造方法没有返回值类型。也不需要写返回值。因为它是为构建对象的,对象创建完,方法就执行结束。

         2、构造方法名称必须和类型保持一致,包括大小写。

         3、构造方法没有具体的返回值,但可以有return语句,如 return;

         4、当没有指定的构造方法时,系统会自动添加无参的构造方法。

         5、当有指定的构造方法时,无论是有参还是无参的构造方法,都不会自动添加无参的构造方法。

         6、构造方法的重载:方法名相同,但是参数列表不同的多个方法,调用时会自动根据不同的参数选择相应的方法。

内存图解:

 

构造方法和一般方法的区别:

        构造方法在对象创建时就执行了,而且只执行一次

       一般方法是在对象创建后,需要使用时才被对象调用,并可以被多次调用

有了构造方法之后可以对对象的属性进行初始化,那么还需要对应的set和get方法吗?

    需要相应的setget方法,因为对象在创建之后需要修改和访问相应的属性值时,在这时只能通过set或者get方法来操作。

this关键字

this.成员变量  用来区分成员变量和局部变量
this() 在一个类里面的构造方法中来调用本类的其他构造方法。

super关键字

在创建子类对象时,父类的构造方法会先执行,因为子类中所有构造方法的第一行有默认的隐式super();语句。

格式:

     调用本类中的构造方法

         this(实参列表);

     调用父类中的空参数构造方法

        super();

    调用父类中的有参数构造方法

       super(实参列表);

问题总结:

 

1、为什么子类对象创建都要访问父类中的构造方法?

        因为子类继承了父类的内容,所以创建对象时,必须要先看父类是如何对其内容进行初始化的

2、子类中的构造方法为什么会有一句隐式的super()呢?

       子类会继承父类中的内容,所以子类在初始化时,必须先到父类中去执行父类的初始化动作。这样,才可以使用父类中的内容。

3、当父类中没有空参数构造方法时,子类的构造方法必须有显示的super语句,指定要访问的父类有参数构造方法。

4、如果子类的构造方法第一行写了this调用了本类其他构造方法,那么super调用父类的语句还有吗?

     没有的,因为this()或者super(),只能定义在构造方法的第一行,因为初始化动作要先执行。

5、父类构造方法中是否有隐式的super呢?

     有的。只要是构造方法默认第一行都是super();

6、父类的父类是谁呢?super调用的到底是谁的构造方法呢?

        Java体系在设计,定义了一个所有对象的父类Object

 注意:

类中的构造方法默认第一行都有隐式的super()语句,在访问父类中的空参数构造方法。所以父类的构造方法既可以给自己的对象初始化,也可以给自己的子类对象初始化。

如果默认的隐式super()语句在父类中没有对应的构造方法,那么必须在构造方法中通过this或者super的形式明确要调用的构造方法。

 

原文地址:https://www.cnblogs.com/Java-125/p/8677234.html