Java 内部类

​内部类:

内部类:定义在另一个类里面或一个方法里的类叫做内部类。

一般包含四种内部类:静态内部类、匿名内部类、成员内部类、局部内部类。

  1. 静态内部类

     public class Test {
        
        static class B{
       }
    }
    

    和静态变量、静态方法类似,静态内部类也是和当前类(Test)绑定。使用时,也是通过Test类来调用。

    public class Test {
        
        static class B{
       }
        public static void main(String[] args) {
            B b1 = new Test.B();
            //在当前类Test中使用时,和静态变量,静态方法类似,
            //也可以把Test.B()省略写为B()
            B b2 = new B();
       }
    }
    
  2. 匿名内部类
    在一个方法或是代码块中定义的类,并且没有显示申明类的名称。

    public class Test {
        
        public static void main(String[] args) {
            //定义了一个匿名内部类
            A a = new A(){
           };
       }
    }
    class A{ }
    

    匿名内部类是使用的非常多的一种内部类,和A a = new A(); 这样的实例操作不同,后边还有一个大括号,表示可以重写方法,其实是定义了另外一个类(没有显示的类名,所以叫匿名)。经常用在需要实例化某个对象,但需要重写方法时,比如new接口,抽象类就是使用匿名内部类较多的方式。

    public class Test {
        
        public static void main(String[] args) {
            //定义了一个匿名内部类
            X x = new X(){
                @Override
                public void callback() {
               }
           };
       }
    }
    interface X{
        void callback();
    }
    
  3. 成员内部类
    作为对象的一个成员来定义的类。

    public class Test {
        
        class C{
       }
    }
    

    和成员变量、实例方法类似,成员内部类也是和当前类的实例对象绑定的,类似Test类对象的成员。需要通过对象来使用:

    	public class Test {
        
        public static void main(String[] args) {
            C c = new Test().new C();
       }
        class C{
       }
    }
    
  4. 局部内部类
    类似局部变量,局部内部类的作用域也是和局部变量类似,是在方法或是代码块中定义。这点和匿名内部类的作用域一样。局部内部类和匿名内部类的写法非常类似,只是显示声明了类的名称。

    public class Test {
        
        public static void main(String[] args) {
            class D extends A{
           }
            System.out.println(new D());
       }
    }
    class A{ }
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值