zoukankan      html  css  js  c++  java
  • Java基础笔记(7)----三个修饰符

    1. abstract抽象
      1. 方法
        1. 抽象方法:abstract修饰的方法,只有声明 而没有方法的实现(连{}都没有)。
        2. 语法:修饰符 返回值类型 方法名(形参列表);
        3. 注意:抽象方法 必须定义在 抽象类中。
        1. 抽象类:被abstract修饰的类,不能 实例化(创建对象)。
        2. 语法: 修饰符 class 类名 [继承关系]{}
        3. 注意:
          1. 抽象类 不以创建对象;但是 可以声明引用(强制多态)。
          2. 子类可以继承抽象类,但是 必须实现抽象类中的所有抽象方法; 除非 该子类又是抽象类。
          3. 抽象类中 可以有抽象方法 也可以有非抽象的方法。

          抽象类的好处:强制 使用多态。

    2. static 静态、
      1. 属性/实例变量
        1. 语法:类以内,方法以外  static 数据类型 变量名;
        2. 概念:类变量/静态变量,是指被static修饰的属性/实例变量,被该类的 所有对象共享(与对象无关)。
        3. 使用: 类名.属性名
      2. 方法/实例方法
        1. 语法:访问修饰符 static 返回值类型 方法名(形参列表){

          // 方法的实现部分

          }

        2. 概念:类方法/静态方法,是指被static修饰的方法,被该类的 所有对象共享(与对象无关)。
        3. 使用:类名.方法名(实参); // 建议
        4. 注意:
          1. static修饰的方法中不允许使用this和super;
        5. static修饰的方法可以被继承;只能被static的方法覆盖;但没有多态(详见下条);
        6. 通过引用调用static方法时,执行的是 引用类型自身的;
        7. 在static方法中 只能直接调用static的方法;而不能直接调用非static的方法。
      3. 静态代码块
        1. 初始代码块:在类以内,方法以外 定义的代码块。
        2. 用于 在创建对象时,和 属性初始化 按定义的先后顺序 依次进行初始化工作。
        3. 静态代码块:用static修饰的 类以内方法以外的代码块, 只执行1次(在类加载时)。
    3. final 最终
      1. 变量(实例变量+局部变量+static变量)
        1. final修饰的变量 为最终变量,只能被赋值1次 不允许修改(常量)。 
        2. 注意:
          1. final修饰的实例变量,将不再分配默认值;
          2. 可以在 声明/初始代码块/构造方法 赋初值;
          3. 如果使用构造方法 给final的属性赋初值,必须保证 所有的构造中都赋初值。
          4. final修饰的类变量,将不再分配默认值;可以在声明/静态代码块 赋初值。
          5. final修改引用类型 的变量时,代表 引用自身的值不允许修改(地址值不允许改)。

       

      1. 方法
        1. final修饰的方法 为最终方法,不能被 覆盖。
        1. final修饰的类 为最终类,不能被 继承。
        2. 如果一个类是final的,则该类中的所有方法都是final的。
    4. 拓展与提升:
      1. static,final、abstract都不能修饰构造方法
      2. 类加载
        1. 概念:在JVM第1次使用某个类时,先从classpath下找到对应的.class文件,读取该文件中的所有内容(属性/方法/类名/包结构/构造/静态....),并保存起来的过程,称为类加载。
        2. 类加载 在同一个JVM中 只进行1次。
        3. 类加载的时机:第1次使用某个类时
          1. 创建该类的对象
          2. 使用该类的静态成员(静态变量/静态方法)
          3. 创建子类对象 或 使用子类的静态成员
            1. 递归对父类 类加载1次
            2. 对子类 类加载1次
            3. 分配空间 所有实例变量 赋默认值
            4. 递归的创建父类对象
            5. 初始化本类属性 和 初始代码块 按定义的先后执行
            6. 调用本类构造方法
  • 相关阅读:
    VS一个奇怪的发布问题
    VS删除空白行
    IDEA Rider 准备试用一段时间(1)
    IDEA Rider使用64位IISExpress(3)
    IDEA rider 管道模式 经典模式(2)
    VSCode批量替换使用注意问题
    IScroll Unable to preventDefault inside passive event listener due to target being treated as passive
    数据库索引也不是多多益善
    css设置手型光标
    javascript参数化拼接字符串两种方法
  • 原文地址:https://www.cnblogs.com/lvsling/p/8457364.html
Copyright © 2011-2022 走看看