一、学习笔记
static关键字
概述
static 静态修饰符
可以修饰类的成员 被static修饰的成员 属于类 而不单属于某个对象
被所有对象所共享
static静态访问
static 静态的访问
对象名.属性名; 不推荐
对象名.方法名(实际参数); 不推荐
类名.属性名;
类名.方法名(实际参数);
static的注意事项
static的注意事项
静态内容随着类的加载而加载 优先于对象出现
所以静态只能直接访问静态 不能直接访问非静态
静态中不能使用this/super
局部代码块
成员代码块
静态代码块
局部代码块
限制变量的作用域范围
成员代码块
定义在类中方法外的代码块
创建对象时执行 也称为构造代码块
静态代码块位于类中方法外
类加载时执行 类只加载一次 静态代码块只执行一次
1.创建对象
2.创建子类对象
3.访问静态成员
4.访问子类静态成员
类的加载
加载
连接
初始化
静态代码块执行
静态代码块> 构造代码块>构造方法
定义静态常量
静态内容优先于对象存在
当类加载时 静态方法就已经加载了
静态的a就已经有值了 所以可以访问
但是 name和age还没有进入到堆内存中
还没值 不能使用已存在的内容访问还未出现的内容;如果想访问name和age属性 先创建对象
静态不能直接访问非静态
静态常量
public static final 数据类型 变量名 = 值
静态导入(了解)
静态导入
import static 包名(com.doit.demo).类名.*;
静态的内存解释
权限修饰符
不同权限的访问能力
在同一个包下的无关类中 private不能访问
在同一个包下的子类中 private不能访问
不同包下的无关类中 只有public可以访问
其他不能访问
不同包下的子类中 public protected可以访问
默认和私有不能访问
public 公共权限 可以修饰 类 方法 成员变量 任意地方都可以访问 一个文件中只能有一个public修饰的类
public修饰的类 类名必须与文件名相同
protected 受包含的权限 可以修饰 内部类 方法 成员变量 当前包与其他包的子类可以访问
默认 包权限 可以修饰类 方法 成员变量 当前包下可以访问
private 私有权限 可以修饰 内部类 方法 成员变量 当前类可以访问
final 最终修饰符 可以修饰 类 方法 成员变量 局部变量
final修饰类不能继承 修饰的方法不能被重写 修饰的变量是常量
static 静态修饰符 可以修饰 内部类 方法 成员变量
abstract 抽象修饰符 可以修饰 类 方法
final和abstract能不能一起使用?
final和abstract修饰类 不能一起使用 final修饰的类不能继承 而abstract修饰的类 要求必须继承
final和abstract修饰符方法 也不能一起使用 final修饰不能重写 而abstract修饰的方法 要求子类必须重写
static和abstract能不能一起使用?
如果修饰内部类 可以一起使用
但是如果修饰方法 不能一起使用 假设可以的话 就会出现类名直接运行一个抽象方法 调用抽象方法没有意义
final和static能不能一起使用?
可以
private和abstract能不能一起使用?
如果修饰内部类 可以一起使用
如果修饰方法 不能一起使用 private修饰的方法 子类看不到 而abstract要求子类重写 冲突.
native 本地修饰符 可以修饰方法 如果被native修饰的方法 说明这个方法不是用java语言编写
用c语言编译 这个方法 与操作系统进行交互 我们看不到源码.
内部类
内部类
成员内部类
局部内部类
成员内部类
定义在类中方法外的类
class 外部类 {
class 内部类{
}
}
访问特点
内部类可以直接访问外部类的成员,包括私有成员。
外部类要访问内部类的成员,必须要建立内部类的对象。
创建内部类对象格式:
外部类名.内部类名 对象名 = new 外部类型().new 内部类型();
内部类仍然是一个独立的类,在编译之后会内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号
匿名内部类
匿名内部类
属于局部内部类一种
1.定义了一个类的子类
2.创建了这个子类的对象
作用:临时创建一个类子类对象的快捷方式
格式
new 父类/接口(){
重写方法
};
引用类型的传递
引用类型
当引用类型是方法的形式参数时 如何调用方法
调用方法时 传入当前类型的对象
调用方法时 传入当前类型的子类对象
使用匿名内部类
当引用类型是方法的返回值类型时 如何返回数据
返回当前类型对象
返回当前类型的子类对象
匿名内部类 子类对象
接口
接口作为方法的形式参数时 该方法如何调用
方法的参数是接口是 调用方法时只能传入其实现类对象
也可以使用匿名内部类
接口作为方法的返回值类型时 该方法返回什么数据
返回值类型是接口 只能返回其实现类对象
二、今日的学习心情
状态比较好,收获满满的一天,非常开心
三、明日规划
练习代码速度,上课注意听预习困惑的问题,课前提前准备,加油。