一. 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. S32K148-CAN收发

    最近在搞一个转换板开发,大概意思把CAN信号转换成SPI信号,方案有两种:1)通过硬件电路直接把信号的bit位一位一位移给两个集成芯片:2)通过MCU接收CAN信号,再把信号变量转换成SPI信号发送给 ...

  2. Möbius 反演注记

    目录 基本理论基础 数论函数 线性筛 Mobius 反演 Dirichlet 卷积 数论分块 / 整除分块 拆函数 时间复杂度分析 基本形式 GCD 形 万能 Prod 的莫比乌斯反演 正常例题 YY ...

  3. Pref 社论

    目录 题面 题解 算法 1 算法 2 算法 3(标答) 代码 算法 1 20pts(by jijidawang) 40pts(by Rolling_Star) 算法 2 算法 3 题面 一个长度为 \ ...

  4. .NET性能优化-使用SourceGenerator-Logger记录日志

    前言 在现在许许多多的应用系统中,日志非常关键,它即是排查问题的强力工具,也是程序员居家旅行工作甩锅必备良品. 在团队中编码中,我们都要求对于那些会变更数据的接口.调用第三方的接口记录请求和响应参数, ...

  5. Linux系列之比较命令

    前言 Linux中有两个比较命令,它们分别是comm和diff,在比较文本文件的版本时通常很有用.本文介绍它们的区别和简单用法. comm命令 该命令对两个文本文件进行比较,并显示每个文件独有的行和它 ...

  6. 虚言妙诀终虚见,面试躬行是致知,Python技术面试策略与技巧实战记录

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_183 2021年,对于正在找工作的朋友来说,笼罩在新冠肺炎疫情之下,今年的就业季显得更加具有挑战性,更有意思的是,每当这个时候,各 ...

  7. ASP.NET Core 6框架揭秘实例演示[32]:错误页面的集中呈现方式

    由于ASP.NET是一个同时处理多个请求的Web应用框架,所以在处理某个请求过程中出现异常并不会导致整个应用的中止.出于安全方面的考量,为了避免敏感信息外泄,客户端在默认情况下并不会得到详细的出错信息 ...

  8. ViewGroup事件分发源码分析

    1.AndroidStudio源码调试方式 AndroidStudio默认是支持一部分源码调试的,但是build.gradle(app) 中的sdk版本要保持一致, 最好是编译版本.运行版本以及手机的 ...

  9. django路由匹配、反向解析、无名有名反向解析、路由分发、名称空间

    目录 django请求生命周期流程图 1.Django请求的生命周期的含义 2.Django请求的生命周期图解及流程 3.Django的请求生命周期(分布解析) 路由层 1.路由匹配 2.path转换 ...

  10. SQL Server事务隔离级别

    事务 定义 事务是作为单个逻辑工作单元执行的一系列操作. 一个逻辑工作单元必须有四个属性,称为原子性.一致性.隔离性和持久性 (ACID) 属性,只有这样才能成为一个事务. 一个事务可以包含多个操作. ...