java学习阶段一 内部类
介绍
类中可以包含一个类,成为相对的内部类 外部类 实现信息隐藏
基本知识
-
成员内部类(普通内部类)
获取内部类对象实例
//第一种 外部类名.内部类名 对象名 = new 外部类名().new内部类名(); //第二种 外部类名.内部类名 对象名 = 已存在外部类对象名.内部类名(); //外部类设置一个获取内部类的方法 调用此方法
内部类访问修饰符和一般类一样使用方法
内部类可以直接访问外部类的成员
属性重名 使用 外部类名.this.属性 访问
方法重名
外部类访问内部类需要通过内部类实例
-
静态内部类 (static修饰)
和成员类区别:
只能直接访问外部类的静态方法和成员,如果需要调用非静态方法,只能通过实例化外部类对象调用
静态内部类实例不需要依赖外部类对象
可以通过 外部类.内部类.静态成员 来访问静态内部类静态成员
属性与外部类重名时需要访问外部类静态属性 通过 外部类.属性 非静态属性 则 new 外部类().属性
-
方法内部类 (在方法中的内部类)
此类作用域在方法中 不能定义静态成员
和方法内部成员一样不能有访问修饰符
可以包含final 和abstract
-
匿名内部类 (隐藏名字)
使用场景: 对类的实例化只有一次
//在调用方法的传参中 new 抽象类或者接口类名(){重写方法}
注意事项
匿名内部类无法添加修饰符 无法编写构造方法 可以添加构造代码块 不能出现静态成员
只能有一个方法名 所以此类只能继承或者实现一个接口