2020.7.29 final 静态类 修饰符

发布于 2020-07-29  40 次阅读


1.学习内容

  • final 使用

    • final: 不可改变。可以用于修饰类、方法和变量。
      • 类:被修饰的类,不能被继承。
      • 方法:被修饰的方法,不能被重写。
      • 变量:被修饰的变量,不能被重新赋值。
        • 局部变量——基本类型
          • 基本类型的局部变量,被final修饰后,只能赋值一次,不能再更改。
        • 局部变量——引用类型
          • 引用类型的局部变量,被final修饰后,只能指向一个对象,地址不能再更改。但是不影响对象内部的成员变量值的修改
        • 初始化方式
          • 1.显式初始化 直接在定义时候赋值
          • 2.构造方法初始化 在构造方法呢初始化
      • 被final修饰的常量名称,一般都有书写规范,所有字母都大写
  • static 关键字(静态)

    • static 特征

      • 优先于对象存在
      • static是静态修饰符,一般修饰成员。
      • 被static修饰的成员属于类,推荐类名调用
      • static修饰的成员属于类,所有对象共享其中属性
      • 被static修饰的成员又叫类成员,不叫对象的成员。
    • static 修饰变量和方法

      • 静态变量
        • static 修饰成员变量时,该变量称为类变量
        • 每个对象都共享类表里的值
      • 静态方法
        • static 修饰成员方法时,该方法称为类方法
        • 建议使用类名来调用
    • static 静态方法调用的注意事项:

      • 静态方法中只能调用静态方法,只能使用类变量
      • 静态方法不能访问成员变量或成员方法
      • 成员方法可以方法静态变量或者静态方法
      • 静态方法中,不能使用this
    • static 静态原理

      • static 修饰的内容:
        • 是随着类的加载而加载的,且只加载一次。
        • 存储于一块固定的内存区域(静态区),所以,可以直接被类名调用。
        • 它优先于对象存在,所以,可以被所有对象共享。

    • static 静态代码块

      • 静态代码块
        • 定义在类下(和类方法平级),使用static修饰的代码块{ }。
        • 位置:类中方法外。
        • 执行:随着类的加载而执行且执行一次,优先构造方法的执行。
    • static 静态导入

      • 静态导入就是java包的静态导入,
      • 使用import static 静态导入包 ,
      • 直接使用方法名去调用静态的方法。
  • 权限修饰符

    • 四大修饰符

      • public:公共的
      • protected:受保护的
      • default:默认的
      • private:私有的
    • 不同权限的访问能力

      • public 全部可以访问
      • protected 不同包中无关类无法访问
      • default 不同包,不同包中不能访问
      • private 只能同一个类中访问
      public protected default(空的) private
      同一类中
      同一包中(子类与无关类)
      不同包的子类
      不同包中的无关类
    • 建议使用权限:
      • 成员变量使用private ,隐藏细节。
      • 构造方法使用public ,方便创建对象。
      • 成员方法使用public ,方便调用方法。
  • 内部类

    • 内部类简介:
      • 在一个类中,定义一个类
    • 分类(成员内部类,匿名内部类)
      • 成员内部类 :定义在类中方法外的类。
        • 定义
          • 内部类可以直接访问外部类的成员,包括私有成员。
          • 外部类要访问内部类的成员,必须要建立内部类的对象。
        • 创建内部类对象格式:
          • 外部类名.内部类名 对象名 = new 外部类型().new 内部类型();
        • 小提示
          • 内部类仍然是一个独立的类,在编译之后会内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号
      • 匿名内部类 :是内部类的简化写法。
        • 定义:
          • 它的本质是一个带具体实现的 父类或者父接口的 匿名的 子类对象
        • 使用:
          • new 父类名或者接口名(){
                // 方法重写
                @Override
                public void method() {
                    // 执行语句
                }
            };

  • 引用类型的传递

    • 类名作为形参,作为返回值

      • 实际上都是传递对象的地址,
    • 抽象类作为形参和返回值

      • 实际上是对抽象类的实现类地址传递
    • 接口名作为形参和返回值

      • 实际上是对接口实现类的地址传递

2.扩展延伸知识

  • private 修饰的final 是什么含义?
    • private 是只能当前类的内部使用
    • final是只能赋值一次
    • 只能在当前类中使用,不能被继承

3.灵感代办

  • 描述final修饰的类的特点
  • 描述final修饰的方法的特点
  • 描述final修饰的变量的特点
  • 能够掌握static关键字修饰的变量调用方式
  • 能够掌握static关键字修饰的方法调用方式
  • 能够写出静态代码块的格式
  • 能够说出权限修饰符作用范围
  • 能够说出内部类概念
  • 能够理解匿名内部类的编写格式
  • 能够使用引用类型作为方法的参数并调用

4.复习内容

5.学习成果&问题


Ares个人进阶之路