匿名内部类内部类静态内部类的区别和联系.docx

上传人:牧羊曲112 文档编号:3343516 上传时间:2023-03-12 格式:DOCX 页数:3 大小:37.44KB
返回 下载 相关 举报
匿名内部类内部类静态内部类的区别和联系.docx_第1页
第1页 / 共3页
匿名内部类内部类静态内部类的区别和联系.docx_第2页
第2页 / 共3页
匿名内部类内部类静态内部类的区别和联系.docx_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《匿名内部类内部类静态内部类的区别和联系.docx》由会员分享,可在线阅读,更多相关《匿名内部类内部类静态内部类的区别和联系.docx(3页珍藏版)》请在三一办公上搜索。

1、匿名内部类内部类静态内部类的区别和联系匿名内部类、内部类、静态内部类的区别和联系内部类与匿名内部类的区别内部类有如下特征:1.内部类被编译成名为OuterClassName$InnerClassName.class的类。 2.内部类可以引用定义在它嵌套的外部类中的数据和方法,所以不需要将外部类对象的引用传递给内部类的构造方法,因此,内部类可以拿程序简单和简洁。 3.声明用可见性修饰符声明内部类,遵从应用于一般类成员的可见性规则。 4.可以将内部类声明为static。一个static内部类可以使用外部类的名字访问。一个static类是不能访问外部类的非静态成员的。 5.内部类的对象经常在外部类中

2、创建。但是也可以从另一个类中创建一个内部类的对象。如果该内部是非静态的,就必须先创建一个外部类的实例,然后用下面的语法创建一个内部类的对象: Java代码1.OuterClass.InnerClass innerObject OutObject.new Innerclass .如果内部类是静态的,那么使用下面的语法为它创建一个对象:Java代码2.OuterClass.InnerClass innerObject new OutObject.Innerclass 匿名内部类是一种特殊的内部类,所以有很多方面都应把它当作内部类对待。除此之外,它还不以下特征。1.匿名内部类必须是扩展父类或实现接口

3、的。但是它不能有明确的extends或implements语句。 2.匿名内部类必须实现父类或接口中所有的抽象方法。 3.匿名内部类总是使用父类的无参数构造方法来创建实例。如果匿名内部类实现了接口,构造方法就是Object. 4.匿名内部类编译为名为OuterClassName$n.class的类。如,如果外部类Test有两个匿名类,那么它们就编译成Test$1.class和Test$2.class。静态内部类和非静态内部类的区别1. 嵌套类的对象,并不需要其外围类的对象。 即它可以不依赖于外部类实例被实例化。2. 不能从嵌套类的对象中访问非静态的外围类对象。 这是由Java语法中静态方法不能

4、直接访问非静态成员所限定3. 外部类访问内部类的的成员有些特别, 不能直接访问, 但可以通过内部类实例来访问, 这是因为静态嵌套内的所有成员和方法默认为静态的了.同时注意, 内部静态类Person只在类StaticTest 范围内可见, 若在其它类中引用或初始化, 均是错误的.4 . 静态内部类可以有静态成员,而非静态内部类则不能有静态成员。 5. 静态内部类的非静态成员可以访问外部类的静态变量,而不可访问外部类的非静态变量;6 . 非静态内部类的非静态成员可以访问外部类的非静态变量。生成一个静态内部类不需要外部类成员:这是静态内部类和成员内部类的区别。静态内部类的对象可以直接生成:Outer.Inner in = new Outer.Inner;而不需要通过生成外部类对象来生成。这样实际上使静态内部类成为了一个顶级类(正常情况下,你不能在接口内部放置任何代码,但嵌套类可以作为接口的一部分,因为它是static 的。只是将嵌套类置于接口的命名空间内,这并不违反接口的规则)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号