zoukankan      html  css  js  c++  java
  • 15_abstract,static,final

    一. 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修饰引用类型:地址不可变
  • 相关阅读:
    JS获取当前网页大小以及屏幕分辨率等
    JS获取浏览器信息及屏幕分辨率
    vue中获取客户端IP地址(不需要额外引入三方文件)
    vue事件修饰器
    export,import ,export default的区别
    Vue中动态添加多个class
    Vue中通过鼠标移入移出来添加或取消class样式(active)
    restapi(5)- rest-mongo 应用实例:分布式图片管理系统之一,rest 服务
    restapi(4)- rest-mongo : MongoDB数据库前端的httpserver
    restapi(3)- MongoDBEngine : MongoDB Scala编程工具库
  • 原文地址:https://www.cnblogs.com/MRASdoubleZ/p/14428678.html
Copyright © 2011-2022 走看看