• 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的形式明确要调用的构造方法。

     

  • 相关阅读:
    愚人节的礼物
    Image Transformation
    Rails
    Google Map
    Code Formatter
    ACboy needs your help again!
    Geek's Collection(幂运算)
    Train Problem I
    Beautiful Meadow
    Card Trick(模拟)
  • 原文地址:https://www.cnblogs.com/Java-125/p/8677234.html
Copyright © 2020-2023  润新知