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. 调用本类构造方法

Java基础笔记(7)----三个修饰符的更多相关文章

  1. Java学习笔记10---访问权限修饰符如何控制成员变量、成员方法及类的访问范围

    1.Java有三种访问权限修饰符,分别为public.protected.private,还有一种为缺省权限修饰符的情况,记为default.其中,可以由public和default来修饰类:这四种修 ...

  2. Java基础知识回顾之二 ----- 修饰符和String

    前言 在上一篇中,回顾了Java的基本数据类型 ,这篇就来回顾下Java中的一些修饰符以及String. 修饰符介绍 Java修饰符主要分为两类: 访问修饰符 非访问修饰符 其中访问修饰符主要包括 p ...

  3. java基础笔记(三)——main方法

    1.解析public static void main(String[] args)方法 JVM在运行程序时,会首先查找main()方法作为入口,main是JVM识别的特殊方法名. public是权限 ...

  4. Java基础第一天--继承、修饰符

    继承 继承的概述: 继承是面向对象三大特征之一.可以使得子类具有父类的属性和方法,还可以在子类中重新定义,追加属性和方法. //创建父类 public class Fu{ public void sh ...

  5. Vue.js学习笔记(三) - 修饰符

    本篇将简单介绍常用的修饰符. 在上一篇中,介绍了 v-model 和 v-on 简单用法.除了常规用法,这些指令也支持特殊方式绑定方法,以修饰符的方式实现.通常都是在指令后面用小数点“.”连接修饰符名 ...

  6. 【java学习笔记2】访问控制修饰符 public、protected、默认、private

    先写了一个User()类: package chapter01; public class User { // 私有的 private int id; // 受保护的 protected int ag ...

  7. Java基础笔记 – Annotation注解的介绍和使用 自定义注解

    Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 |  被围观 25,969 views+ 1.Anno ...

  8. Java虚拟机笔记(三):垃圾收集算法

    一.标记-清除(Mark-Sweep)算法 标记清除算法是最基础的收集算法,其他收集算法都是基于这种思想. 标记清除算法分为“标记”和“清除”两个阶段:首先标记出需要回收的对象,标记完成之后统一清除对 ...

  9. 【转】Java基础笔记 – 枚举类型的使用介绍和静态导入--不错

    原文网址:http://www.itzhai.com/java-based-notes-introduction-and-use-of-an-enumeration-type-static-impor ...

  10. Java语言中有4种访问修饰符

    转载:http://wuhaidong.iteye.com/blog/851754 Java语言中有4种访问修饰符 在Java语言中有4中访问修饰符:package(默认).private.publi ...

随机推荐

  1. freemarker中的left_pad和right_pad

    freemarker中的left_pad和right_pad 1.简易说明 (1)left_pad 距左边 (2)right_pad 距右边 (3)当仅仅只有一个参数时,插入的是空白:当有两个参数时, ...

  2. Failed while installing Dynamic Web Module 3.0

    1.错误描述 2.错误原因 Java Web项目不满足Web Module 3.0,需要降低Web Module版本 3.解决办法 (1)降低Web Module版本为2.5 (2)修改jdk版本,升 ...

  3. Java中常见的Exception种类

    Java中常见的Exception种类 1.ClassNotFoundException 2.IOException 3.NoSuchFieldException 4.NoSuchMethodExce ...

  4. freemarker.template.TemplateException:Error executing macro:mainSelect

    1.错误描述 freemarker.template.TemplateException:Error executing macro:mainSelect require parameter:id i ...

  5. T470p VS 2017 上运行 VS 2015 + Qt 5.6.2 + GLSL 400

    vs 2017 的qt设置可以按照这篇文章 注意,必须使用qt的安装程序进行安装,否则会出现意想不到的问题(不要简单地把qt的文件拷贝过来..血的教训) 显卡的问题 好不容易编译通过了,一运行报了一个 ...

  6. json数据的转义

    { "DSGA": { "approval": "qatest_nj" }, "applydetailId": &quo ...

  7. 【POJ2387】Til the Cows Come Home (最短路)

    题面 Bessie is out in the field and wants to get back to the barn to get as much sleep as possible bef ...

  8. [Luogu3041][USACO12JAN]视频游戏的连击Video Game Combos

    题面 sol 设\(f_{i,j}\)表示填了前\(i\)个字母,在\(AC\)自动机上跑到了节点\(j\)的最大得分.因为匹配需要暴跳\(fail\)所以预先把\(fail\)指针上面的匹配数传下来 ...

  9. mysql mariadb 删除表中的数据时数据库变大

    删除表中数据以前 [root@RM uar3]# du -sh * 3.3G apache-tomcat-7.0.54 150M instalRM4UAR 0 mariadb 903M mariadb ...

  10. JavaScript方面的书籍

    我要向大家推荐两本js方面的书: <JavaScript权威指南> <JavaScript高级程序设计>适合想在js方面有所提高的开发人员 我们读书是为了什么? 有的人可能是兴 ...