匿名内部类
匿名内部类是先创建了一个这个类的子类,然后向上造型创建子类的对象,只不过子类没有名字,由系统自动创建,名字和原来的类一样,由系统创建的没有名字的子类只能new一个对象
节省了向上造型?可以用它创建抽象类的对象
匿名内部类就是一个没有名字的内部类,实际上是实现了对象的接口或者继承了对应的类的内部类。
任何一个接口都可以存在匿名内部类,任何一个可以被继承的类都可以存在匿名内部类
是构建子类的对象
{
public void xxx(){
} //派生类的有抽象方法要重写
};
局部变量:在方法中定义的值
在匿名内部类中不能更改局部变量的值,因为变量在此处会默认为final类型
只要是类,一定有.class字节码文件 外部类名$(1,2,3,4.。。。)
成员内部类
内部类在其他类中不可用,只在内部类的类可用
在内部类可以直接访问内部class中外部类中的成员
外部类可以创建内部类对象
class 内部还有class
枚举
是一种引用数据类型
枚举的对象是固定的,不是想造型几个就造型几个
常用于定义一组常量,直接用逗号分隔,不需要加分号,这些常量也全部大写
都继承enum类
枚举的构造方法都是私有的,不能new。应该使用类名.枚举的对象
格式: enum 枚举类名{
枚举常量;枚举常量
}
类名.values = 获取接口中所有值
枚举常量必须在有效代码第一行
package
同包中的类不能重名,不同包中的类可以重名
类的全称:包名。类名
import
不同包中的类不能用,
1.写类的全称可以使用
2. import+类的全称导入需要的类
- 代表全部
内存管理
由JVM管理
堆:new出来的对象(成员变量,数组的元素,方法的地址)
栈:局部变量(包括方法的参数)
方法区:.class字节码文件(包括方法,静态变量)