内部类
-
什么是内部类: 在类内部定义的类,称为内部类
-
内部类的优点:
- 可以隐藏类的定义
- 可以共享外部的属性、方法
-
何时使用内部类:
- 如果需要隐藏类的定义,或者内部类共享外部
- 的属性或者方法时候,使用内部类。
-
如果不需要如上特性,就不要使用内部类!
-
提示:内部类一般只在类的内部使用,不在外部使用。
-
案例:
public class Demo01 { public static void main(String[] args) { /* * 内部类 */ Foo foo = new Foo(); foo.demo(); } }
class Foo{ //外部类 int a = 5; public void demo() { //在Foo的内部使用内部类Goo创建对象 Goo goo = new Goo(); //在Foo的内部访问goo的方法 goo.test(); } class Goo{ //内部类 public void test() { //内部类共享了外部类的属性 System.out.println(a); } } }
匿名内部类
- 匿名: 没有名字。
- 在类内部定义,没有名字的类。
- 其优点:
- 书写简洁!使用方便
- 具有内部类的全部功能
- 封装类的定义
- 与外部类共享数据和方法
- 由于语法简洁,使用很广泛
- 简洁实现接口时候使用
- 简洁继承抽象类时候使用
- 简洁继承类时候使用。
- 使用匿名内部类
- 必须有父类型,可以是类,抽象类或接口,只能有一个父类型
- 必须作为子类派生自父类。
- 子类没有类名,直接继承自父类,并且直接创建了对象。
- Java源文件编译后,每个类生成一个class文件,内部类和匿名类都会生成独立的class文件