首页 > 编程知识 正文

静态内部类的作用,静态内部类和内部类的区别

时间:2023-05-06 07:10:45 阅读:11462 作者:4713

在java语言中,可以把一个类定义到另外一个类的内部,在类里面的这个类就叫内部类,外面的类就叫外部类。

在这种情况下,该内部类可以视为外部类的成员。内部类好处

1 .隐藏不想让别人知道的操作,也就是封装性。

publicinterfacecontents { intvalue (; } publicinterfacedestination { stringreadlabel (; 公共类代码{私有类内容时间参数{私有inti=11; 公共int value () {return i; } protectedclassgdestinationimplementsdestination {专用标签; 私有目标(字符串where to ) {label=whereTo; }公共字符串读取标签(() {return label; }公共目标(字符串)返回目标(s ); }公共内容cont () {return new Content ); } classtestgoods { publicstaticvoidmain (字符串[ ] args ) ) {Goods p=new Goods ); Contents c=p.cont (; 目的地d=p.dest (Beijing ); }在此示例中,类Content和GDestination在类Goods内部定义,它们分别具有protected和private修饰符来控制访问级别。 后面的main方法直接在Contents c和Destination d中操作。 你连这两个内部班的名字都没看到! 这样,内部类的首要好处就是隐藏了不想让别人知道的操作,即体现了打包性。 另外,还发现在外部类的作用范围外得到内部类对象的第一个方法是用该外部类的方法创建并返回。

2 .内部类对象可以访问创建的外部类对象的内容。 也包括私有变量。

公共类goods {私有价值=2; 隐私保护时间参数{隐私保护inti=11 * value rate; 公共int value () {return i; } protectedclassgdestinationimplementsdestination {专用标签; 私有目标(字符串where to ) {label=whereTo; }公共字符串读取标签(() {return label; }公共目标(字符串)返回目标(s ); }公共内容cont () {return new Content ); }现在,我们将表示货物价值系数的私有成员变量valueRate添加到Goods类中,然后在内部类Content的方法value ()计算价值时将其相乘。

发现value (可以访问valueRate。 这也是内部类的第二个优点。 我们发现内部类对象可以访问创建的外部类对象的内容,包括私有变量。

这是非常有用的特性,在设计时会提供更多的想法和捷径。 要实现这一功能,内部类对象需要对外部类对象的引用。

内部类可以分为多种;主要以下4种:静态内部类,成员内部类,局部内部类,匿名内部类

静态内部类

静态内部类是声明为静态的内部类,可以独立于内部类来实例化,但普通的内部类必须实例化和实例化外部类。 静态内部类不能与外部类具有相同的类名。 您无法访问外部类的常规成员变量,但可以访问静态成员变量和静态方法(包括专用类型)

成员内部类

其中一个静态内部类是成员内部类,而不是静态类。无论是静态类还是非静态类,都可以自由引用外部类的属性和方法。 但是,不能使用静态属性和方法

本地内部类

定义在一个代码块的内部类中,该范围是其所属的代码块,是内部类中使用最多的类型。 与局部变量一样,局部类不能由public、protected、private和static限定,只能访问方法中定义的final类型的局部变量

匿名内部类

匿名内部类是没有类名的内部类,没有class、extends、implements或构造函数,必须继承其他类或实现其他接口。 匿名内部类的优点是使代码更简洁、更紧凑,但存在可读性降低的问题。

内部类的使用时机

1、实现事件侦听器时(例如,动作监听器。 采用内部类很容易实现)

2、创建事件驱动(注意内部类的对象包括私有成员,可以访问外部类的成员方法和变量);

3、功能实现后,为了节约编译后生成的字节码(内部类可以减少字节码文件,即java文件编译后的. class文件)。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。