动力节点首页 全国咨询热线:400-8080-105

绑定手机号,登录
手机号

验证码

微信登录
手机号登录
手机号

验证码

微信登录与注册
微信扫码登录与注册

扫码关注微信公众号完成登录与注册
手机号登录
首页 > 文章

Java内部类分类

05-18 16:15 562浏览
举报 T字号
  • 大字
  • 中字
  • 小字

内部类(Inner Class),是 Java 中对类的一种定义方式,是嵌套类的一个分类,即非静态嵌套类(Non-Static Nested Class)。内部类(非静态嵌套类)分为成员内部类、局部内部类、静态内部类和匿名内部类4种。

1.成员内部类

与成员变量类似,写在类里。如果内部类持有外部类的引用,可能导致内部类没有执行完,外部类也无法释放,有内存泄漏风险。想要避免这种现象,需要在外部类对象生命周期结束时手动将内部类对象生命周期结束。除非延迟回收会成为系统的运维瓶颈,一般不需要特别关注,GC机制通常足以应付。

public class Outter {
    String s;
    class Inner{
    }
}

2.局部内部类

局部内部类是定义在一个方法或者一个作用域里的类。Inner2和Inner都是Outter的内部类。

public class Outter {
    public Inner getInner2(){
        class Inner2 extends Inner{
            String s = "Inner2";
        }
        return new Inner2();
    }
}
class Inner{
    String s;
}

3.静态内部类

好吧,就是成员内部类前面加了static。声明为static的类不会持有外部类的引用,可以通过软引用的方式保存外部类的了引用,只有静态内部类不可能造成内存泄漏。

public class Outter {
    String s;
    static class Inner{
    }
}

4.匿名内部类

匿名内部类应该是我们用得最多的,在编写事件监听的代码时使用匿名内部类不但方便,而且使代码更加容易维护。

public class Outter {
    void test() {
        new Thread(new Runnable(){
            String S;
            @Override
            public void run(){}
        }).start();
    }
}

上述的Java内部类的4种类型包含了所有的Java内部类,与实例的方法和变量一样,内部类与其外围类的实例相关联,并可直接访问该外围类对象的方法和字段。此外,由于内部类与实例相关联,因此不能在内部类中定义任何静态成员。 想了解其中的详细规则我们可以参考动力节点在线的免费视频课程,学习更多的相关知识。

0人推荐
共同学习,写下你的评论
0条评论
代码小兵316
程序员代码小兵316

16篇文章贡献58453字

相关课程 更多>

作者相关文章更多>

推荐相关文章更多>

Java面试题及答案整理

提枪策马乘胜追击04-21 20:01

Spring常见面试题

代码小兵92504-17 16:07

Java零基础实战项目——五子棋

代码小兵98804-25 13:57

Java string类详解

杨晶珍05-11 14:54

6道经典算法面试题

杨晶珍05-12 16:39

发评论

举报

0/150

取消