什么是内部类?
1.内部类也是一个类;
2.内部类位于其他类声明内部。
内部类的常见类型
1.成员内部类
2.局部内部类
3.匿名内部类
4.静态内部类
简单示例
/**
* 外部类
*
*/
public class OuterClass {
private String s = "private String from OuterClass";
private String fs = "final String from OuterClass";
/**
* 成员内部类,字面上理解就是外部类的一部分。类似外部类的属性或方法
* 外部类的属性和方法对于内部类都是可以访问的,包括private属性方法
* 调用方法 外部类名。this。属性或方法
*/
class PartnerClass
{
public void print()
{
System.out.println("this comes from PartnerClass and can get "+OuterClass.this.s);
OuterClass.this.print();
}
}
private void print()
{
System.out.println("private method form OuterClass");
/**
* 局部内部类只可以在一定范围内被访问
*/
class Part
{
void print()
{
System.out.println("this comes from part class and can get "+ OuterClass.this.s);
}
}
new Part().print();
}
interface Anonymous
{
void print();
}
/**
* 匿名内部类多为已经定义好的接口或抽象类,在需要使用的地方采取进行具体实现
* 同成员内部类类似
*/
Anonymous anyms = new Anonymous() {
@Override
public void print() {
System.out.println("this comes from a anonymous class and can get "+OuterClass.this.fs);
OuterClass.this.print();
}
};
/**
* 静态内部类只能访问外部类的静态属性和方法
* 静态内部类可以通过new OuterClass。StaticClass()的方式创建静态内部类对象
*/
private static class StaticClass implements Anonymous
{
@Override
public void print() {
System.out.println("this comes from static inner class");
}
}
public static void main(String[] args) {
OuterClass outer = new OuterClass();
/**
* 外部类可以创建获取内部类对象
* 创建方法为 new 外部类().new 内部类()
*/
outer.new PartnerClass().print();
outer.anyms.print();
StaticClass sc = new OuterClass.StaticClass();
sc.print();
}
}
内部类有什么用处?
1.隐藏类名和具体实现细节
2.内部类可以访问外部类的属性和方法
3.内部类可以用来实现闭包和回调
4.内部类可以用来实现多重继承
5.封装数据进行传值
个人内部类使用经验不多,以后有用到会补充进来