三大修饰符(abstract&static&final)

本文深入探讨了Java中三大修饰符abstract、static和final的使用方法及限制条件,包括抽象类与抽象方法的概念,静态成员的特性,以及final关键字如何确保变量、方法和类的不变性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

三大修饰符(都不能修饰构造方法)


关键字abstract(抽象)

  • abstract 可以修饰属性,方法,类;

  • 抽象类:abstract关键字修饰的类是抽象类,抽象类可以声明引用,不能创建对象

  • 抽象方法:abstract关键字修饰的类是抽象方法;抽象方法只有方法的声明,没有实现

  • 如果一个类拥有抽象方法,这个类必须是抽象类,抽象类未必有抽象方法

  • 子类继承一个抽象类,如果子类不想成为抽象类,就必须实现父类中所有的抽象方法

  • 抽象类支持多态


关键字static(静态)

static关键字只能修饰属性和方法,初始代码块

  • static修饰属性

    • 属性的初始化不是在创建对象的时候。
    • 属性全类共享;可以用类名直接访问。
    • 静态属性可以直接通过,类名进行访问。
  • static 修饰方法

    • 静态方法只能被子类的静态方法覆盖,而且没有多态(没有多态是因为java后根据引用的类型调用相应的静态方法,而不是子类覆盖后的静态方法)
    • 静态方法可以直接通过类名去访问
    • 静态方法只能访问静态成员(静态属性,静态方法)
    • 静态方法中不能出现this关键字(this代表指向当前对象,而静态方法可以通过类名直接访问,没有当前对象)(默认类名.静态方法)
  • static修饰静态初始代码块

    • 静态初始代码块在类加载的时候执行
      • 什么是类加载?
      • ()类加载在创建对象之前进行
      • ()JVM首次使用某个类时,需通过CLASSPATH查找该类的.lass文件(这个过程叫做类加载)
      • ()如果只是声明一个引用是不需要类加载的
      • 类加载的顺序
      • (1)如果有父类,先父类进行父类的类加载
      • (2)按顺序初始化静态属性或是执行静态初始代码块
      • 类加载的时机
      • (1)第一次创建对象
      • (2)第一次访问子类,需要先加载父类的类加载,再加载子类的类加载
      • (3)访问静态成员(静态属性,静态方法)
      • (4)Class.forName(“权限定名”);

    final关键字

    final关键字可以修饰变量,方法,类

    fiinal修饰变量

    • final修饰的变量为常量,常量一旦赋值不可改变(final修饰的变量,不再提供默认值,必须手动赋值。要保证当对象创建完成的时常量是有值的,可以再直接赋值,可以再构造方法中赋值)(因为常量赋值后不可改变,一般用public static修饰。便于访问,可以节省空间,全类共享)。

    fiial修饰方法

    • final修饰的方法不能被子类覆盖,

    final修饰类

    • final修饰的类不能被继承。

    访问修饰符可以修饰哪些

    private 属性 方法 构造方法

    (default) 属性 方法 构造方法 类

    protected 属性 方法 构造方法

    public 属性 方法 构造方法 类


三大修饰符与哪些修饰符不能连用

private abstract 不能联用(私有的不可被继承)

final abstract 不能联用(final修饰的类不允许被继承)

static abstract 不能联用(static不能修饰类)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值