内部类以及匿名内部类详解

内部类概述

首先要分清楚 在一个java文件中,可以有多个平级的类。如图1,需要注意的是只有跟文件名相同名字的才可以用修饰符修饰。但是Demo1,
Demo2 不是内部类。

在这里插入图片描述

内部类的定义

内部类的定义是:在一个类的内部再定义一个类,那么此时这个类就称之为内部类。如图2

图2
如果你理解成员变量,那你也应该理解成员内部类。

内部类访问的特点

内部类的访问一共有两个特点

1.内部类可以直接访问外部类的成员,包括私有成员。直接看代码

public class ClassA {// 外部类
    /**
     * 定义一个成员变量
     */
    private String name = "csdn";
    /**
     * 内部类,也叫成员内部类
     */
    class ClassB {

        public void getName() {
            // 内部类直接访问了 外部类的name属性(可以访问成员变量,成员方法),私有,公有都可以访问
            name = "11";
            method();
        }
    }

    /**
     * 定义一个外部类的成员方法
     * */
    public void method(){
        System.out.println("我是外部类成员方法");
    }

}

代码块中内部类可以直接访问 外部类的成员方法 成员变量,无论公有私有。

2 外部类要访问内部类的成员(成员变量,成员方法),必须要建立内部类的对象,直接上代码

/**
 * 外部类
 */
public class ClassC {
    /**
     * 内部类
     */
    class ClassD {
        private String name = "内部类成员变量";

        public void test() {
            System.out.println("我是内部类");
        }
    }

    /**
     * 定义内部类方法,访问内部类成员
     */
    public static void main(String[] args) {
        // 首先创建内部类对象
        ClassC.ClassD in = new ClassC().new ClassD();
        System.out.println(in.name);
        in.test();
    }

}

打印结果为
在这里插入图片描述

匿名内部类

首先我们要知道,不管是内部类访问外部类,还是外部类访问内部类,无非是想调用类中的成员变量跟成员方法,就像定义接口,然后去写一个实现类,也是为了实现接口并且调用接口内部的方法。下面讲的匿名内部类也是这个目的,大家要记着我们使用内部类的目的是什么。那么匿名内部类的作用就是 我们不用去定义实现类去实现接口的方法,而是直接调用。
我先写一个简单地Demo,大家先感受一下。
在这里插入图片描述

在这里插入图片描述

这样就可以不用写实现类来实现接口,就可以直接调用接口里的方法。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值