(1) 内部类提供了更好的zhuanqian封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问安徒生剧本该类。
(2) 内部类成员可以直接访问外部类的私有数据,因为内部类被当成其外部类成员,同一个类的成员之间可以互相访问。但外部类不能访问内部类的实现细节,例如内部类的成员变量。
(3) 匿名内部类适合用于创建那为什么说相逢是首歌些仅需要一次使用的类。
(4) 在java中内部类主要分为成员内部类(非静态内部类、静态内部类)、匿名内部类、局部内部类。
成员内部类是一种与field、方法、构造器和初始化块相似的类成员,成员内部类分为两种:静态内部类和非静态内部类,使用static修饰的成员内部类是静态内部类,没有使用static修饰的成员内部类是非静态内部类。
因为内部类作为其外部类的成员,所以可以使用任意访问控制符如private、protected和public等修饰;非静态内部类不能有静态方法、静态属性、静态初始化块;非静态内部类可以直接访问外部类的成员,但是外部类不能直接访问非静态内部类成员;外部类的静态方法、静态代码块中不能直接创建非静态内部类实例,访问内部类成员;非静态内部类的对象必须寄存在外部类的对象里,因此创建非静态内部类对象之前,必须先创建其外部类对象;当在非静态内部类的方法内访问某个变量时,系统优先在该方法内查找是否存在该名字的局部变量,如果存在就使用该变量;如果不存在,则到该方法所在的内部类中查找是否存在该名字的成员变量,如果存在则使用该成员变量;如果不存在,则到该内部类所在的外部类中查找是否存在该名字的成员变量,如果存在则使用该成员变量;如果依然不存在,系统将出现编译错误:提示找不到该变量。
(1) 非静态内部类可以直接访问外部类的成员,但是外部类不能直接访问非静态内部类成员
(2) 非静态内部类不能有静态方法、静态属性、静态初始化块
(3) 外部类的静态方法、静态代码块中不能直接创建非静态内部类实例,访问内部类成员
在外部类的普通方法和静态方法中访问内部类成员
如果使用static来修饰一个内部类,则这个内部类就属于外部类本身,而不属于外部类的某个对象。static关键字的作用是把类的成员变成类相关,而不是实例相关,即static修饰的成员属于整个类,而不属于单个对象。
静态内部类可以包含静态成员,也可以包含非静态成员。静态内部类不能访问外部类的实例成员,只能访问外部类的类成员;外部类不如何查询银行卡余额能直接访问静态内部类的成员,但可以使用静态内部类的类名作为调用者来访问静态内部类的类成员,也可以使用静态内部类对象作为调用者来访问静态内部类的实例成员。(1) 静态内部类不能访问外部类的实例成员,只能访问外部类的类成员
(2) 外部类不能直接访问静态内部类的成员,但可以使用静态内部类的类名作为调用者来访问静态内部类的类成员,也可以使用静态内部类对象作为调用者来访问静态内部类的实例成员。
匿名内部类适合创建那种只需要一次使用的类,创建匿名内部类时会立即创建一个该类的实例,这个类定义立即消失,匿名内部类不能重复使用。
匿名内部类必须继承一个父类,或实现一个接口,但最多只能继承一个父类,或实现一个接口;匿名内部类不能是抽象类,因为系统在创建匿名内部类时,会立即创建匿名内部类的对象。因此不允许将匿名内部类定义成抽象类;匿名内部类不能定义构造器,因为匿名内部类没有类名,所以无法定义构造器,但匿名内部类可以定义实例初始化块,通过实例初始化块来完成构造器需要完成的事情;test类定义了一个test方法,该方法需要一个product对象作为参数,但product只是一个接口,无法直接创建对象,因此此处考虑创建一个product接口实现类的对象传入该方法——如果这个product接口实现类需要重复使用,则应该将该实现类定义成一个独立类;如果这个product接口实现类只需一次使用,则可采用上面程序中的方式,定义一个匿名内部类。
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注www.887551.com的更多内容!
本文发布于:2023-04-06 00:54:59,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/80a068abbb9f2e99f18caf0f22b82133.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:解析JavaSe的内部类.doc
本文 PDF 下载地址:解析JavaSe的内部类.pdf
留言与评论(共有 0 条评论) |