Java 构造方法、final

构造方法:构造(创建)对象时使用的方法。

  • 方法名必须与类名称完全相匹配;
  • 构造方法不需要返回类型
  • 构造方法不能被static、final等关键字修饰,且不能有return返回语句;
  • 伴随着new被调用
  • 构造方法不会被继承,但是子类创建对象时会执行父类的构造方法,因为子类中所有构造方法的第一行有默认的隐式super()语句

1.隐式无参构造方法

默认自带的,无参,并且方法体是空的,啥都没有。如果重写了任何一个,则这个空的就没了。

2.显式无参构造方法

重写默认自带的构造方法,在方法体里写点东西

3.显式有参构造方法

一般用于将参数值 传给 对象里的属性值

关于构造方法的几种情况

1.重写构造方法后,原本的默认无参构造方法就没了,但是new的时候需要执行,如果重写的构造方法时有参,则需要传参; 如果父类只有有参构造方法,则子类构造方法也需要参数,此时需要写super(参数);为了执行父类的构造方法。

2.父类构造方法只能在子类构造方法里被调用,用super();调用

3.调用父类普通方法,super.方法名();

4.调用本类其他构造方法,this(),和super()一样只能只能调用一次并且放第一行。只调用一次的目的是:避免多次创建对象;放第一行的目的是:避免操作对象时对象还未构建成功;

final(不可变)

  • final修饰的不能被继承,即和abstract矛盾
  • final修饰的方法不能被继承或重写,即不能被改变,private修饰的方法也是这样
  • final修饰的变量需要定义初始值,并且不能修改。定义初始值的方式有2种,直接赋值 和 通过构造方法赋值(在new的时候初始化),都只初始化一次并且之后不可被修改。相比static也只初始化一次,但是static的变量可以改变
  • final修饰的对象可以改变属性值,但是不能改变该对象的引用地址

牛客刷题:

1.系统总是自动给一个类提供构造方法。错。只有不声明构造方法时,系统才提供默认无参构造方法。

原文地址:https://www.cnblogs.com/shoulinniao/p/11571704.html