day11【内部类、注解】
内部类
概述
1、什么是内部类?
将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,B则称为外部类。
2、为什么要声明内部类呢?
当一个事物的内部,还有一个部分需要一个完整的结构进行描述,而这个内部的完整的结构又只为外部事物提供服务,不在其他地方单独使用,那么整个内部的完整结构最好使用内部类。
而且内部类因为在外部类的里面,因此可以直接访问外部类的私有成员。
3、内部类都有哪些形式?
根据内部类声明的位置(如同变量的分类),我们可以分为:
(1)成员内部类:
- 静态成员内部类
- 非静态成员内部类
(2)局部内部类
- 有名字的局部内部类
- 匿名的内部类
静态内部类
语法格式:
【修饰符】 class 外部类{
【其他修饰符】 static class 内部类{
}
}
非静态成员内部类
语法格式:
【修饰符】 class 外部类{
【修饰符】 class 内部类{
}
}
局部内部类
语法格式:
【修饰符】 class 外部类{
【修饰符】 返回值类型 方法名(【形参列表】){
【final/abstract】 class 内部类{
}
}
}
匿名内部类
当我们在开发过程中,需要用到一个抽象类的子类的对象或一个接口的实现类的对象,而且只创建一个对象,而且逻辑代码也不复杂。那么我们原先怎么做的呢?
(1)编写类,继承这个父类或实现这个接口
(2)重写父类或父接口的方法
(3)创建这个子类或实现类的对象
小结:
/*内部类:
内部类的方法可以访问内部类的成员
内部类可以访问外部类的私有·成员‘
内部类可以访问外部类的成员
外部类:
外部类可以访问外部类的成员
外部类不能直接访问内部类
普通成员内部类类型必须是外部类 内部类
创建对象的时候需要先创建外部类对象把次啊能创建内部类对象。
使用外部类对象.new的方式创建内部类
静态内部类创建对象的时候 不需要创建外部类对象在创建内部类对象,可以直接创建内部类对象
匿名内部类是局部内部类的一种特殊形式
匿名内部类的作用是作为接口的实现类 所以需要实现接口中所有的方法
*/