Java——super和final关键字

一、方法覆写关键字——super

1 、super用于方法
《1》用于构造方法(重要)——super(参数列表)
当子类调用父类无参构造方法时,super()可写可不写;表示调用父类无参构造。
当子类调用父类有参构造方法时,super(参数列表)必须要写,要告诉编译器当前调用的是那个有参构造。

注意:
a. 子类构造方法中调用父类构造必须是第一行
b.this与super不能同时调用

《2》用于普通方法
用法:super.方法名(参数)
用于在子类中明确调用父类中被覆写的方法

2 、super用于属性(了解)
用法:super.属性名
表示调用父类中被覆写的属性,权限不是private
在这里插入图片描述

二、final修饰类(String类和8大基本数据类型的包装类,Integer)

当一个类被final修饰,表示该类不可以拥有子类(不允许有继承);
一旦一个类被final修饰,该类的所有方法都会默认加上final(成员变量不会加final)

《1》 final修饰方法
当一个方法被final修饰,明确表示该方法不允许被覆写
当一个方法被private修饰后,相当于加了一个final关键字

《2》 final修饰属性——常量

1.final修饰普通数据类型的成员变量(最主要的用途)
被final修饰的成员变量:
①必须在声明时初始化,并且初始化后值无法被修改;
②也可在构造块或构造方法中初始化

** 注意区分**
public final int a=10;(栈中)
public static int b=20;(全局数据区,共享)

final 变量——是常量,每个对象都有自己的final变量,在每个对象产生时初始化;

static final——全局变量,所有对象共享,在类加载时初始化,效率较高,通过类名调用

全局变量命名规范:
多个单词全大写,单词之间用_分隔
初始化全局变量方法:在静态代码块中初始化

2、final修饰引用数据类型的变量(值不能改变)

eg:class person{
}
public static void main(){
final person p=new person();//表示p指向的地址不可变,但类person的属性值等可变
}

3、final修饰的引用变量,数据类型也不可变
在这里插入图片描述

解析:出错的是——语句1,3,4
语句1——b1,b2都为int型,b3为byte可能丢失数据——错误
语句2——b1为int型,b4为byte切不可变,故不能提升为int,错误
语句3——同上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值