Java的内部类主要分为哪几种?分别简单的举例实现

在Java中,类(Class)是面向对象编程的基本构建块,它用于封装对象的状态和行为。

而内部类(Inner Class)是一种特殊的类,它可以在另一个类(外部类)的内部进行定义。

内部类与外部类之间存在一种特殊的关系,这种关系允许内部类访问外部类的成员和方法,同时,外部类也可以访问内部类的成员和方法。
内部类主要分为以下几种类型:
1. 成员内部类(Member Inner Class):成员内部类是最常见的内部类类型,它像外部类的一个普通成员一样,可以访问外部类的所有成员和方法(包括private和静态成员)。成员内部类不能包含任何static声明。

class Outer {
    int x = 10;
    
    class Inner {
        void show() {
            System.out.println(x);
        }
    }
}

public class Test {
    public static void main(String[] args) {
        Outer out = new Outer();
        Outer.Inner in = out.new Inner();
        in.show();
    }
}


2. 静态内部类(Static Inner Class):静态内部类被声明为static,它只能访问外部类的静态成员和方法。静态内部类可以包含静态成员,并且不需要依赖外部类的实例就可以被实例化。

class Outer {
    static class Inner {
        static void show() {
            System.out.println("Hello from static nested class");
        }
    }
}

public class Test {
    public static void main(String[] args) {
        Outer.Inner.show();
    }
}


3. 局部内部类(Local Inner Class):局部内部类是在外部类的一个方法内部被定义的,它仅在该方法的作用域内可见。局部内部类通常用于实现接口或继承类,以及处理与当前方法相关的特定任务。

class Outer {
    void doSomething() {
        class Inner {
            void show() {
                System.out.println("Hello from local inner class");
            }
        }
        Inner obj = new Inner();
        obj.show();
    }
}

public class Test {
    public static void main(String[] args) {
        Outer out = new Outer();
        out.doSomething();
    }
}


4. 匿名内部类(Anonymous Inner Class):匿名内部类是没有名称的局部内部类,它通常用于扩展一个类或实现一个接口。匿名内部类通常用于创建事件监听器或初始化匿名子类。

interface MyInterface {
    void show();
}

class Outer {
    void doSomething() {
        MyInterface obj = new MyInterface() {
            void show() {
                System.out.println("Hello from anonymous inner class");
            }
        };
        obj.show();
    }
}

public class Test {
    public static void main(String[] args) {
        Outer out = new Outer();
        out.doSomething();
    }
}

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值