一. abstract

1. 抽象类

  • 被abstract修饰的类,称为抽象类
  • 抽象类意为不够完整的类、不够具体的类
  • 抽象类对象无法独立存在,即不能new对象,但可以声明引用
  • 作用:
    • 可被子类继承,提供共性属性和方法
    • 可声明为引用、更自然的使用多态
  • 经验:
    • 抽象父类,可作为子类的组成部分,依附于子类对象存在
    • 父类共性+子类独有组成完整的子类对象

2. 抽象方法

  • 被abstract修饰的方法,称为抽象方法
  • 只有方法声明,没有方法实现({}的部分)
  • 意为不完整的方法,必须包含在抽象类中
  • 抽象类中不一定有抽象方法,但有抽象方法的类一定是抽象类
  • 子类继承抽象类后,必须重写抽象类中所有的抽象方法,否则子类还是抽象类

二. static

概念:

  • 静态(static)可以修饰属性和方法,无需创建对象,可直接通过类名访问
  • 称为静态属性(类属性)、静态方法(类方法)
  • 静态成员是全类所有对象共享的成员
  • 在全类中只有一份,不因创建多个对象而产生多份

1. 静态属性

实例属性:是每个对象各自持有的独立空间(多份),对象单方面修改,不会影响其他对象

静态属性:是整个类共同持有的共享空间(一份),任何对象修改,都会影响其他对象

2. 静态方法

特点

  • 静态方法允许直接访问静态成员
  • 静态方法不能直接访问非静态成员
  • 静态方法中不允许使用this或是super关键字
  • 静态方法可以继承,不能重写,没有多态

3. 静态代码块

  • 类加载时,触发静态代码块的执行(仅一次)
  • 执行地位:静态属性初始化之后
  • 作用:可为静态属性赋值,或必要的初始行为

类加载

  • JVM首次使用某个类时,需通过CLASSPATH查找该类的,class文件
  • 将.class文件中对类的描述信息加载到内存中,进行保存
    • 如:包名、类名、父类、属性、方法、构造方法。。。
  • 加载时机
    • 创建对象
    • 创建子类对象
    • 访问静态属性
    • 调用静态方法
    • 主动加载:Class.forName(“全限定名”)

三. final

什么是最终?

  • 最后的,不可更改的

final可修饰的内容

  • 类(最终类)

    • final修饰类:此类不能被继承
    • String、Math、System均为final修饰的类,不能被继承
  • 方法(最终方法)
    • final修饰方法,此方法不能被重写
  • 变量(最终变量)
    • 1. 局部常量

      • final修饰变量:此变量值不能被改变(常量),无初始值,只允许赋值一次
    • 2. 实例常量
      • 不再提供默认值,必须手动赋予初始值
      • 赋值时机:显示初始化、构造方法
      • 注意:如果在构造方法中为实例常量赋值,必须保证所有的构造方法都能对其正确赋值
    • 3. 静态常量
      • 不再提供默认值,必须手动赋予初始值
      • 赋值时机:显示初始化,静态代码块
    • 4. 对象常量
      • final修饰基本类型:值不可变
      • final修饰引用类型:地址不可变

15_abstract,static,final的更多相关文章

  1. Java 关键字static final使用总结

    Static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,被static修饰的成员变量和成员方法独立于该类的任何对象.也就是说,它不依赖类特定的实例,被 ...

  2. 关于The serializable class XXX does not declare a static final serialVersionUID field of type long的警告

    编写实体类并且继承序列化接口时候,实体类会有警告,要生成一个静态的serialVersionUID. 上网搜了一下资料,现通俗解释一下: 点击前2个选项,会生成: private static fin ...

  3. 为什么构造器不能是abstract, static, final, native or synchronized的?

    Unlike methods, a constructor cannot be abstract, static, final, native  or synchronized. 1. A const ...

  4. static、final、static final 用法

    1.使用范围:类.方法.变量.2.区别和联系:2.1.static 含义:静态的,被 static 修饰的方法和属性只属于类不属于类的任何对象.2.2.static 用法:2.2.1.static 可 ...

  5. 为什么接口要规定成员变量必须是public static final的呢?(转)

    在interface里面的变量默认都是public static final 的.所以可以直接省略修饰符: String param="ssm"://变量需要初始化 为什么接口要规 ...

  6. the serializable class XXX does not declare a static final seriaVersionUID...的问题

    关于myeclips提示The serializable class XXX does not declare a static final serialVersionUID field of typ ...

  7. The serializable class does not declare a static final serialVersionUID field of type long

    在编译以下Java程序时,出现The serializable class  does not declare a static final serialVersionUID field of typ ...

  8. static int和static final int的区别

    1.static变量 按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量:另一种是没有被static修饰的变量,叫实例变量.两者的区别是: 对于静态变量在内 ...

  9. [ReadingNotes] Search the links, static final in the java

    [ReadingNotes] Search the links, static final in the java */--> pre { background-color: #2f4f4f;l ...

随机推荐

  1. 聊聊 C++ 中的四种类型转换符

    一:背景 在玩 C 的时候,经常会用 void* 来指向一段内存地址开端,然后再将其强转成尺度更小的 char* 或 int* 来丈量一段内存,参考如下代码: int main() { void* p ...

  2. 数据质量管理工具预研——Griffin VS Deequ VS Great expectations VS Qualitis

    开源数据质量管理工具预研--Griffin VS Deequ VS Great expectations VS Qualitis. 概述 ​ 数据质量监控(DQC)是最近很火的一个话题,也是数据治理中 ...

  3. P2512 【一本通提高篇贪心】「一本通 1.1 练习 6」[HAOI2008]糖果传递

    [HAOI2008]糖果传递 题目描述 有 n n n 个小朋友坐成一圈,每人有 a i a_i ai​ 个糖果.每人只能给左右两人传递糖果.每人每次传递一个糖果代价为 1 1 1. 输入格式 小朋友 ...

  4. Flink Window&Time 原理

    Flink 中可以使用一套 API 完成对有界数据集以及无界数据的统一处理,而无界数据集的处理一般会伴随着对某些固定时间间隔的数据聚合处理.比如:每五分钟统计一次系统活跃用户.每十秒更新热搜榜单等等 ...

  5. 一款性价比很高的PLC网关如何采集西门子PLC到Thingsboard

    PLC转MQTT网关金鸽BL100 西门子S7-200smart对接thingsboardBL102是一款采集西门子.三菱.欧姆龙.台达.AB.施耐德等各种PLC数据转换为Modbus TCP.OPC ...

  6. nodejs学习总结02

    response对象常用的API #response对象 response  对象类型<http.ServerResponse> response对象常用成员:response.write ...

  7. 【安全通告】关于 DolphinScheduler 漏洞情况的说明

    点击上方 蓝字关注我们 [安全通报] [影响程度:低] Apache DolphinScheduler 社区邮件列表最近通告了 1 个漏洞,考虑到有很多用户并未订阅此邮件列表,我们特地在此进行情况说明 ...

  8. DolphinScheduler 1.2.0 源码解析之 MasterServer

    这一篇主要讲解的是dolphinscheduler 1.2.0 的master部分的源码,从主类MasterServer开始,从启动到运行,master主要做了以下三件事情 Zookeeper 节点初 ...

  9. 如何在BI中增加“路线地图”并进行数据分析?

    随着客户的需求越来越"百变",最近在做大屏设计的葡萄陷入了困境. 近期客户提出的需求是想在BI工具中增加 "路线地图"展示功能并进行数据分析. 不仅如此,这个& ...

  10. TS 泛型推断好难啊,看看你能写出来不

    前言 最近做东西都在用ts,有时候写比较复杂的功能,如果不熟悉,类型写起来还是挺麻烦的.有这样一个功能,在这里,我们就不以我们现有的业务来举例了,我们还是已Animal举例,来说明场景.通过一个工厂来 ...