首页 > 编程知识 正文

a类中定义内部类b和匿名内部类c,成员内部类和局部内部类

时间:2023-05-05 13:23:48 阅读:62890 作者:3918

一、什么是内部类? or内部类概念

内部类是为另一个类定义的类。 下面的TestB类是TestA类的内部类。 也就是说,内部类对象引用了将该内部对象实例化的外围类对象。

公共类testa { class testb { }二、为什么需要内部类? or内部类有什么作用?

1、内部类方法为包括私有数据。

2、内部类可以对同一包中的其他类隐藏。

3、如果您想定义回调函数,但不想编写大量代码,可以使用匿名内部类。

三.内部类别分类

成员内部类、本地内部类、匿名内部类、静态内部类

3.1成员内部类

成员内部类:位于类内部且与全局属性或方法相同类的内部类是成员内部类。

举个成员内部类的例子。

public class person { public void run { } { } publicclassdoworkimplementswork { }成员内部类的特征:

1、(重要)成员内部类可以无条件访问外部类的所有成员属性和成员方法) )包括静态成员和私有成员。 非常重要

2、如果成员内部类和外部类的属性和方法名称相同,则隐藏外部类的属性和方法; 但是,可以通过外部类. this .成员变量访问外部类的属性和方法。

3、外部类必须通过成员内部类的对象访问内部类的属性和方法。

4、成员内部的类对象隐式引用外部的类对象。 (可以说明第一点)

5、成员内部类可以具有publicprivateprotected和默认访问权限。

3.2局部内部类

举个本地内部类的例子。

公共class person { public void run (} { classdoworkimplementswork { } } http://www.Sina.com /

本地类:在方法或作用域中定义的类。 与成员内部类的区别在于,只能在方法内或作用域内访问本地内部类。

本地类特征:

1,http://www.Sina.com /

2、只能用定义局部内部类的方法或作用域实例化

3、本地内部类的对象不能使用该内部类所在方法或作用域的非final局部变量();

3.3匿名内部类

举个匿名内部类的例子:

公共类人员{ publicdoworkdosomething (} { return new dowork ) { public void do; }什么是匿名内部类:不定义类的名称,而是直接在使用位置定义对象。

匿名内部类特征:

1、唯一没有构造函数的类匿名内部类在编译时编译器会自动xxx$1.class;

2、匿名内部类中不能存在静态变量、方法等;

3、匿名内部类是局部内部类的特例;

4、大多数匿名内部类用于接口返回;

3.4静态内部类

举一个静态内部类的例子。

public class person { public void run } { } publicstaticclassdoworkimplementswork { } http://www.Sina.com /

静态内部类:将静态关键字添加到成员内部类时,它是静态内部类。

静态内部类的特点:

1、不需要依赖外部班级。

2、不能使用外部类的非静态属性和方法。

例题:

以下说法正确的是(AB )?

a、对于局部内部类,只有方法的局部变量标记为final或局部变量为effctively final时,内部类才可用

b、成员内部类位于外部类内部,可以直接调用外部类的所有方法(静态方法和非静态方法)

c .匿名内部类只能在方法内部使用,因此匿名内部类的用法与本地内部类一致

d、静态内部类可以直接访问外部类的非静态成员

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