java:内部类

本文详细介绍了Java中的内部类,包括成员内部类、局部内部类、匿名内部类和静态内部类。内部类可以直接访问外部类的所有成员,提供了更灵活的代码组织方式。匿名内部类简化了类的创建,常用于快速实现接口或父类的功能。同时,文章探讨了各种内部类的使用场景和注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


活动地址:优快云21天学习挑战赛

 ​一、内部类与外部类

类A在类B,则称B为A的外部类,A为内部类

内部类就是把原本的类与类间的独立关系,拓展为包含关系。内部类已经失去了其独立性,所以被调用时,必须加上他的(所有)外部类或者内部类的对象的

注:类的内部五大结构:属性、方法、代码块、内部类、构造器

二、分类:

匿名内部类,局部内部类     

成员内部类,静态内部类

public class AAA {
    private int n1 = 10;

    public void test() {
        C c = new C();
        c.hello();
    }

    class C {//C是一个内部类
        public void hello() {
            System.out.println("C hello...");
        }

        class D {//可以在C这个类,继续定义内部类..333

        }
    }
}

三、内部类分类

共性:

1)、可以直接访问外部类的所有成员,如果重名,则需要:

外部类名。this。外部类属性

2)、作用域是同它对应的成分:匿名内部类和局部内部类都是在方法中;成员内部类和静态内部类都是在类中(对象中)

1、成员内部类(最普通的内部类):相当于一个属性,可以添加修饰符。

2、局部内部类:有类名的定义在方法中的内部类,相当于一个局部变量。普通内部类对象依赖外部类对象而存在。

1)、局部内部类可以访问外部的所有变量。

2)、不能添加访问修饰符(public之类的,因此只能在被定义的方法或代码块中使用)

3)、内部类只能被他的外部类访问和创建对象

4.)、 外部类在方法中,可以创建内部类对象,然后调用方法即可

3、匿名内部类

匿名内部类:本质是内部类,没有名字(不是人定义的)是类也是一个对象(一次性类)。创建类的同时创建了一个对象。(减轻了给类取名的负担、简化了开发)

注:我们的开发过程简化了,但虚拟机的编译运行过程并没有被简化,在虚拟机的底层有一个与当前对象对应的类的存在。

IA tiger = hew IA(){  
//定义了一个匿名内部类的对象tiger,该类实现了IA接口(或是继承了IA类)
     @Override
     public void cry(){
         System.out.println("老虎叫唤.….");
     }
};//语句的结束

1)、匿名内部类既是类,也是对象:所以既有创建对象的特点,又有创建类的特点

2)、匿名内部类没有构造器,也不能重写构造器,(他的构造器调用的是父类或者接口的构造器。)

3、方法的调用,方法的调用通过对象进行,匿名类也是对象

4、静态内部类,同静态属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值