java基础 内部类详解

时间:2023-03-08 23:56:03
java基础 内部类详解

什么是内部类?

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.封装数据进行传值

个人内部类使用经验不多,以后有用到会补充进来