构造方法(构造器)的深入理解

要谈及构造方法,就先要谈及方法,那么什么是方法呢?

方法的定义

  方法:用来描述该类实物共有的一些行为。 可以分为成员方法和静态方法。

            成员方法:没有用static修饰的方法(实例方法,对象方法)。

            静态方法:用static修饰的方法(类方法),可以直接通过类名直接调用。

 注意:如果一个方法的返回值类型是void表示该方法没有返回值

构造方法(构造器)定义

      构造方法和构造器只是翻译上的差异,实际上是同一个事物。

构造方法是一种特殊的成员方法。可以分为有参构造方法和无参构造方法。

        无参构造方法:根据成员变量类型将成员变量初始化为null或0或false。

        有参构造方法:将成员变量进行初始化并赋值(这里指的是通过形参传进来的实参)。

  

构造方法的特点:

       1.构造方法方法名和类名一致,没有返回值,但不能声明void,一旦声明void,系统默认将不是构造方法。

       2.可以设置关键字来控制其访问权限,但是一般情况下使用public方法权限。在默认情况下,如果不写任何关键字,其访问

         权限也是public。.

      3.系统会默认生成一个无参的构造方法。如果我们自己定义了一个构造方法(无参或者有参),原来默认的无参构造方法就

        不存在了(系统默认新定义的构造方法覆盖了默认的无参构造)。

      4.创建子类对象会调用父类构造方法但不会创建父类对象,只是调用父类构造方法初始化父类成员属性。

 

构造方法的作用:

           在实例化对象时给对象属性赋值,即初始化成员属性而不是初始化对象。

解释:实例化类之后(类实例化通过new关键字实现)才能调用类内部的属性,而在实例化类之前,系统需要给类属性分配内存

          进行存储。即在new将对象的引用返回之前初始化对象属性。

                

   在这里就引申到另一个问题,构造方法有什么其他作用?

         当几个变量要实现同样的功能,但是仅仅参数类型不同时,我们仅仅只需要调用不同参数的构造方法就行,不需要新定义

        一个其他的方法。即:在构造方法对类进行构造的时候,只需要将功能类似的,但形参不同的方法直接打包在该类下,当

        我们根据需要调用的时候,直接重载构造器中的需要的方法。

       方法的重载具体参照https://blog.csdn.net/HY845638534/article/details/84112833

构造方法的使用:

     1.在关键字new后面,类名+(),小括号内加上实参;

                      类名 变量=new 类名(参数1,参数2);

       注意:此处的参数为实参,即需要传进去的参数。如果调用无参构造方法,则不需要填写参数。如果调用了参数则必须和

                 需要调用的构造方法参数(形参)参数列表相同,即类型相同,个数形同,类型顺序相同。

     2.跟在关键字super或this后加小括号() ,小括号内加上实参;

public  SalesEmployee(int id,double sales){
    super(id,"");//这里使用了Spuer(),""也为实参,必须写。
}

  这里使用了Spuer(),继承了父类中的  

public Employee(int id ,String name){
    this.id=id;
    this.name=name;
}

this的使用则是

public Employee(int id ,String name ,double money){
    this(id,name);
    this.id=id;
    this.name=name;
    this.money=money;
}

这里this()括号里面的参数是构造方法中的形参,必须名字和顺序相同,则会直接先行去实现this调用的构造方法。用在本类中。

具体的spuer使用参考https://blog.csdn.net/HY845638534/article/details/84112861

猜你喜欢

转载自blog.csdn.net/HY845638534/article/details/84262117