Java —— 内部类(Inner类)

内部类即为在其他类内部定义的子类,根据位置、是否被 static 修饰、是否有类名分为以下四种。

1.成员内部类

同成员变量一样,属于类的全局成员,可以用权限修饰符、static、final、abstract 修饰,在其中可以调用外部类的属性、方法,还可在其中定义内部类。

创建非静态内部类的对象时,必须先创建外部类的对象,通过外部类的对象调用内部类的构造器

class A{    //外部类
    int a;
    String b;
    class B{    //非静态内部类
        ...
    }
}
class Main{
    public static void main(String[] args){
        //创建非静态内部类对象
        A obj=new A();    //创建外部类对象
        A.B obj1=obj.new B();    //通过外部类对象创建非静态内部类对象
    }
}

2.静态内部类

与静态变量类似,使用 static 进行修饰,被整个类所共享,创建静态内部类的对象时,可以直接通过外部类来调用静态内部类的构造器。

class A{    //外部类
    int a;
    String b;
    static class B{    //静态内部类
    }
}
class Main{
    public static void main(String[] args){
        //创建静态内部类对象
        A.B obj2=new A.B();
    }
}

3.局部内部类

同局部变量一样,仅在方法内部有效,当一个方法返回值为某个类或接口的对象,通常使用局部内部类

class A{
    int a;
    String b;
    public void method(){
        class B{    //局部内部类
            public int method(){
                return 1;
            }
        }

        return new B();    //返回一个实现类的对象
    }
}

4.匿名内部类

没有名称的内部类,常用于创建接口的唯一实现类或某个类的唯一子类,其对象只可调用一次

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值