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. 成员变量

编译后会将在类中定义的成员变量进行整理,对于有赋值操作的引用类型,赋值语句将在构造器的开头出现

原文地址:https://www.cnblogs.com/yokii/p/9365587.html