三个修饰符---最终的,最后的 (三个修饰符的总结)

final(最终的,最后的)

final 可以修饰变量(局部变量,实例变量,静态变量)

  1. final修饰的变量是作用范围内的常量,只允许一次赋值,不允许更改
    注意 : final修饰的变量通常以全大写字母作为名字
  2. final修饰实例变量,JVM不再分配默认值
    final修饰实例变量初始化的位置
    (1).在声明的同时给其初始化
    (2).可以在构造方法中对其初始化,但是必须保证每个构造方法中都有对其初始化的语句
  3. final 修饰静态变量,JVM不再分配默认值
    final修饰的静态变量初始化的位置 :
    (1).在声明的同时为其初始化
    (2).可以在静态代码块中完成对其初始化
  4. 如果引用被final修饰,代表引用中存储的对象的地址不可以改变,但是可以通过引用对对象中的属性进行改变

final可以修饰方法 : 被final修饰的方法能被子类继承,但是不允许子类覆盖

final可以修饰类 : 被final修饰的类不能被继承,即没有子类

System、String、Math等一些工具类通常会定义为final类

总结:

(1). abstract 、static 、final 可以修饰那些内容?
abstract : 可以修饰类、方法
static : 可以修饰属性、方法、静态代码块
final : 可以修饰变量(局部变量、实例变量、静态变量)、方法、类

(2).abstract 、static 、final 都不能用于修饰构造方法。
abstract:抽象方法只能有方法的声明,没有方法实现,实现部分让子类完成;但是构造方法是不能被子类继承,如果构造方法被abstract修饰,则子类无法完成构造方法的实现内容。
static:static 和对象没有关系,但是构造方法是用于创建对象的,相互矛盾;同时static修饰的方法可以直接通过, 类名.静态方法名(实参);但是构造方法不允许手动调用。
final:final方法是约束子类不能覆盖,但是构造方法本身就不允许子类继承,谈不上覆盖。

(3).private、abstract、static、final是否能联合修饰成员方法?
① . private 和 abstract:
private 修饰的方法不能被子类继承,
asbtract修饰的方法需要通过子类覆盖给与方法的实现部分,
private 和 abstract联合修饰一个成员方法,矛盾。
② . static 和 abstract :
static 修饰方法可以直接通过类名调用,
如果通过类名调用的是一个抽象方法 (半成品),jvm无法执行,
所以static 和 abstract不能 联合修饰一个成员方法。
③ . final 和 abstract :
final修饰的方法可以被子类继承,但是不允许被覆盖;
abstract修饰的方法的实现需要通过子类覆盖时给与实现。
所以 final 和 abstract 不能联合使用。
④ . private、static、final随意可以组合使用。

(4) . 一个方法中必须而且只能有一个访问修饰符
private、 default 、 protected 、 public(4个访问修饰符)
abstract 、 static 、 final (3个修饰符)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值