构造方法

构造方法是专门用来创建对象的方法,当我们通过关键字new来创建对象时,就是再调用构造函数。

构造方法作用:(1).构造出来一个类的实例 (2).对构造出来个一个类的实例(对象)初始化

格式:
public 类名称(参数类型 参数名称){
    方法体
}

注意事项:

1.构造方法的名称必须和所在的类名称完全一样,就连大小写也要一样
2.构造方法不要写返回值类型,连void都不需要写,不能被static、finalsynchronized、abstract和native修饰
3.主要完成对象的初始化工作,构造方法的调用是在创建一个对象时使用new操作进行的。
4.构造方法不能return一个具体的返回值,接口不允许被实例化,所以接口中没有构造方法。
  如果没有编写任何构造方法,那么编译器将会默认赠送一个构造方法,没有参数,方法体什么事情都不做  {无参构造}
  例子:public Student(){}
5.一旦编写了至少一个构造方法,那么编译器将不再赠送。
6.构造方法分为两种:无参构造方法 有参构造方法
  构造方法可以被重载。没有参数的构造方法称为默认构造方法,与一般的方法一样,构造方法可以进行任何活动,但是经常将他设计为进行各种初始化活动,比如初始化对象的属性。
  重载:方法名称相同,参数列表不同。
7.构造方法在初始化对象时自动执行,一般不能显式地直接调用.当同一个类存在多个构造方法时,java编译系统会自动按照初始化时最后面括号的参数个数以及参数类型来自动一一对应。完成构造函数的调用。
8.构造代码块:
 (1)作用:给对象进行初始化,对象一建立就执行,而且优先于构造函数执行
 (2)构造代码块和构造函数的区别:
   构造代码块是给所有不同对象的共性进行统一初始化,构造函数是给对应的对象进行初始化
9.子类继承父类中,
  ***子类的实例化过程
  ***构造方法不能被子类继承
  ***子类创建对象时,会先去创建父类的对象。
    默认是去调用父类的无参构造方法。
  ***子类构造方法中,第一行默认是super()
  ***为什么子类中第一行会默认有super()
    因为他继承父类的成员使用,使用前这些成员必须初始化,
     而他们是父类的成员,所以,必须通过父类进行初始化。
    所以,会先创建一个父类的对象。
  **当父类没有无参构造方法时,必须使用this或者super调用其他的构造方法。
10.自定义类中,如果不写构造方法,java系统会默认添加一个无参的构造方法。如果写了一个有参的构造方法,就一定要写无参构造方法。
  如果想使用无参的构造方法,就必须手动给出无参构造方法。
  建议:一般情况下,我们自定义的类都要手动给出无参构造方法。
 
原文地址:https://www.cnblogs.com/yun---meng/p/12958131.html