java学习笔记之内部类
2015-09-17 17:13
344 查看
内部类的作用:
-内部类提供了更好的封装,只能让外部类直接访问,不允许同一个包中的其他类直接访问。
-内部类可以直接访问外部类的私有属性,内部类被当成其外部类的成员,但外部类不能访问内部类的内部属性。
内部类的使用场合:
由于内部类提供了封号的封装特性,并且可以很方便的访问外部类的属性。所以,通常内部类在只为所在外部类提供服务的情况下优先使用。
内部类的分类:
⎧⎩⎨⎪⎪⎪⎪⎪⎪成员内部类匿名内部类局部内部类(用的很少){非静态成员内部类静态成员内部类\begin{cases}
成员内部类 &
{\begin{cases}
非静态成员内部类\\
静态成员内部类\\
\end{cases}}
\\
匿名内部类\\
局部内部类(用的很少)
\end{cases}
a、非静态内部类
-必须寄存一个外部类对象里,因此,如果有一个非静态内部类对象那么一定存在一个对应的外部类对象。
-非静态内部类不能有静态方法、静态属性、静态代码块,只能有静态常量变量。
-静态内部类可以看成是外部类的一个普通成员。
b、静态内部类
-当一个静态内部类存在,不一定存在对应的外部类对象。
-静态内部类的实例方法不能访问外部类的实例方法。
-静态内部类看成是外部类的一个静态成员。
c、局部内部类
-相当于方法中的局部变量。
-不能用修饰符,跟局部变量一样,如public、protected、private、transient、static等。
-不能定义静态变量、静态方法。
-只在方法内部可见,不能使用方法中的局部变量,除非是常量。
d、匿名内部类
-有三种方式:
-匿名内部类根据声明的位置,判断其实成员内部类还是方法内部类(局部内部类),如果是成员内部类要遵循成员内部类的语法,如果是方法内部类要遵循方法内部类的语法。
-内部类提供了更好的封装,只能让外部类直接访问,不允许同一个包中的其他类直接访问。
-内部类可以直接访问外部类的私有属性,内部类被当成其外部类的成员,但外部类不能访问内部类的内部属性。
内部类的使用场合:
由于内部类提供了封号的封装特性,并且可以很方便的访问外部类的属性。所以,通常内部类在只为所在外部类提供服务的情况下优先使用。
内部类的分类:
⎧⎩⎨⎪⎪⎪⎪⎪⎪成员内部类匿名内部类局部内部类(用的很少){非静态成员内部类静态成员内部类\begin{cases}
成员内部类 &
{\begin{cases}
非静态成员内部类\\
静态成员内部类\\
\end{cases}}
\\
匿名内部类\\
局部内部类(用的很少)
\end{cases}
a、非静态内部类
-必须寄存一个外部类对象里,因此,如果有一个非静态内部类对象那么一定存在一个对应的外部类对象。
-非静态内部类不能有静态方法、静态属性、静态代码块,只能有静态常量变量。
因为假设可以有静态方法的话,就可以在内部类定义一个自己的引用,外部直接调用,就不用创建外部类了,这与“必须寄存在一个外部类对象里”的设计初衷相违背,所以不允许,如果非要定义的话,直接将内部类定义成静态的就可以了。
-静态内部类可以看成是外部类的一个普通成员。
b、静态内部类
-当一个静态内部类存在,不一定存在对应的外部类对象。
-静态内部类的实例方法不能访问外部类的实例方法。
-静态内部类看成是外部类的一个静态成员。
c、局部内部类
-相当于方法中的局部变量。
-不能用修饰符,跟局部变量一样,如public、protected、private、transient、static等。
-不能定义静态变量、静态方法。
-只在方法内部可见,不能使用方法中的局部变量,除非是常量。
因为局部变量与类对象的生命周期有可能不一致。
d、匿名内部类
-有三种方式:
-继承式 -接口式 -参数式
-匿名内部类根据声明的位置,判断其实成员内部类还是方法内部类(局部内部类),如果是成员内部类要遵循成员内部类的语法,如果是方法内部类要遵循方法内部类的语法。
相关文章推荐
- Java的native关键字---JAVA下调用其他语言的关键词
- mac上java的真正位置
- 单词串最后单词的长度
- Gradle在大型Java项目上的应用
- ubuntu eclipse 集成pyDev
- Struts2 笔记第一天
- Java中使用hex string类型的RSA密钥加解密测试
- java.lang.OutOfMemoryError: PermGen space 解决方法
- java语言基础之面向对象1
- 学习日志---查找算法
- JDK 1.8 新特性
- JDK 1.7 新特性
- JDK 1.6 新特性
- (MyEclipse) MyEclipse完美破解方法(图)
- 【Spring】Spring MVC Controller 参数中文乱码
- Java8改进的HashMap和Hashtable实现类
- Java实现的堆排序(最小堆)
- JDK 1.5 新特性
- scala和java解压zip的文件,并上传到hdfs服务器
- list请求参数作为springmvc方法参数