010.day010
day10笔记
目录
一、Eclipse目录结构
1. 项目文件夹
创建工程后产生的文件夹,包含配置文件以及相关的核心目录
2. 源码文件夹
source类型的目录,可以存在多个,新建工程时,默认会创建src目录
- 只有源码文件夹下的文件才会被识别为代码文件
- 当文件修改后被保存时会自动编译
3. 字节码文件夹
默认会将编译后的class文件按照对应的源码路径存放在工程路径下的bin目录
二、反编译工具
1. jd-gui.exe
2. class打开方式
右键class文件->打开方式->选择更多/浏览->找到jd-gui.exe放置位置->选中->打开->jd-gui.exe会出现在打开方式的列表中->勾选class文件均以此方式打开
三、内部类
在class声明的内部定义的类结构
1. 成员内部类
定义位置与外部类的成员平级
- 需要借助外部类的实例进行实例化
- 内部类可以直接访问到外部类的成员
- 出现同名时可以借助:外部类.this.成员的方式访问外部类的成员
- 反编译产生的this$0为外部类对象的指代
2. 局部内部类
定义地点与局部变量相同
- 可以出现在方法或代码块中
- 只能在定义位置手动实例化使用
- 定义时不需要指定权限修饰符
3. 静态内部类
使用static修饰的局部内部类
- 不需要借助外部对象的实例来实例化
- 静态内部类只能直接访问外部类的静态成员
- 出现同名冲突时可以使用:外部类名.成员的方式区分
4. 匿名内部类
以已经定义的抽象类或接口作为模板,使用new关键字,重新补全定义其中的描述信息
- 特殊的局部内部类,无需使用class关键字声明
- 可以将整个结构看做是一个类的实例
- 可以作为参数传递
public void test(Teach teach) {
teach.exam();
teach.review();
}
public static void main(String[] args) {
Outer outer = new Outer();
// 匿名内部类可以当做参数进行传递
// 以匿名内部类当中的定义实例化的对象
outer.test(new Teach() {
@Override
public void review() {
System.out.println("课前复习");
}
@Override
public void exam() {
System.out.println("随堂练习");
}
});
}
四、对象的实例化
1. 静态代码块
一个相对独立的区域,会最先被加载
2. 动态代码块
编译后会出现在构造方法开头的部分,先于构造器原内容执行
3. 构造方法
对象实例化时调用的方法,会将某些引用类型的成员变量的初始化语句一同执行
4. 成员变量
编译后会将在类中定义的成员变量进行整理,对于有赋值操作的引用类型,赋值语句将在构造器的开头出现