方法重载,重写,final修饰符

方法重载(两同一不同)

  • 同一个类中,方法名相同,形参列表不同

至于返回值类型,访问修饰符与方法重载没有任何关系

可变参数列表

可变参数必须是最后一个参数
带可变参数的方法最后被访问(调用)
数组可以传给可变参数,反之不行
同类型数组与可变参数无法构成方法重载
一个方法只能有一个可变参

方法重写(两同两小一大)

  • 方法名 相同,形参列表 相同
  • 子类方法 返回值类型 必须比父类方法返回值类型“更小”或相等;
  • 子类方法 抛出的异常 比父类方法声明抛出的异常“小”或相等
  • 子类方法的 访问权限 比父类大或相等
  • 父类中静态方法无法被子类重写

当子类重写了父类的方法后,子类对象将无法访问父类中被重写的方法,但是可以调用(super)

如果父类方法具有private访问权限,该方法对子类是隐藏的,子类无法重写

final修饰符

  • final不能修饰构造方法
  • final修饰类,该类不允许被继承
  • 系统不会对 final修饰的成员变量(包括类变量和实例变量) 隐式的初始化
  • final修饰的局部变量在定义时可以不指定初始值,在之后的代码中赋值且只能赋值一次
  • final修饰基本类型变量不能对基本类型变量重新赋值,final修饰引用类型变量,final只保证引用变量引用的地址不会改变
  • final修饰的成员变量必须显示的指定初始值(只能在 非静态初始化块 或 声明该实例变量 或 构造器 中指定初始值),
  • final修饰类变量,(必须且只能在) 静态初始化块中指定初始值 或 声明该变量时指定初始值

不管是类变量还是实例变量还是局部变量,当满足条件:

使用final修饰符

在定义该变量时指定了初始值

该初始值在编译时就被确定下来

则该变量相当于一个直接量

猜你喜欢

转载自www.cnblogs.com/moomcake/p/11667837.html