内部类
2016-04-24 19:41
204 查看
内部类
1、 概念
在类的内部定义的类就是内部类,外部的类称为外部类。
2、 特点
是一个完整的、独立的类。
可以有属性、方法、构造、代码块。
编译之后会有独立的class文件,同样可以产生对象。
3、 class文件名
成员内部类 :外部类的类名 + $+内部类名。
局部内部类:外部类的类名 + $+1+内部类名。(1表示局部内部类的顺序)
4、 类型
4.1成员内部类
4.1.1 概念:作为类的成员,存在于某个类的内部。(用法与成员变量类似)
4.1.2 位置:位于外部类的全局位置。
4.1.3 语法:public class OutClass {
4.1.4 访问修饰符:决定能否在第三方访问该内部类
4.1.4 特点:(1)在外部类的内部可以产生成员内部类的方法,可以访问外部类的所有的成员和方法,不受访问修饰符的限制。
(5)如果内部类属性与外部类属性同名:使用外部类类名.this.属性名调用外部类的属性;
如果内部类方法与外部类方法同名:使用外部类类名.this.方法名调用外部类的方法。
4.1.5 产生对象:可以在外部类的任意方法中,也可以在第三方类的方法中(考虑访问修饰符)
4.2 静态内部类
4.2.1 概念:作为类的静态成员,存在于某个类的内部。(是成员内部类的特例)
4.2.2 位置:位于外部类的全局位置,添加static 修饰符。
4.2.3 语法:
public static class student2{
public void c(){
}
}
4.2.4访问修饰符:决定能否在第三方访问该内部类。
4.2.5 特点:(1) 可以访问外部类中的静态成员和静态方法;
(5)如果属性方法出现同名的情况,用外部类类名.的方式访问外部类中的属性方法;
(9)无需产生外部类对象,使用外部类类名.内部类类名的方式产生内部类对象;
(10)根据访问修饰符,调用属性和方法;
4.2.6产生对象:可以在外部类的任意方法中,也可以在第三方类的方法中(考虑访问修饰符)
4.3 局部内部类
4.3.1 概念:存在于某个方法内部的类。
4.3.2 位置:在外部类的某个方法内部。
4.3.3 语法:
public void study(){
class student3{
4.3.4特点:(1)如果外部方法是静态方法,那么就不能访问外部类中的成员变量和成员方法.
(3)只能定义非static的属性和方法
(4)如果局部内部类所在的方法是静态的,则不能访问外部类的非静态属性和方法;其他情况都可以访问。
(6)如果内部类属性与外部类属性同名:使用外部类类名.this.属性名调用外部类的属性。
4.4 匿名内部类
4.4.1 概念:存在于某个类的内部,但是无类名的类。
4.3.2 语法:
new 类或者接口的名字( ){
4.3.3访问修饰符:不存在。
4.3.4 特点:(1)只能定义非static的属性和方法
(2)如果outMethod是静态的,则不能访问外部类的非静态属性和方法;其他情况都可以访问
1、 概念
在类的内部定义的类就是内部类,外部的类称为外部类。
2、 特点
是一个完整的、独立的类。
可以有属性、方法、构造、代码块。
编译之后会有独立的class文件,同样可以产生对象。
3、 class文件名
成员内部类 :外部类的类名 + $+内部类名。
局部内部类:外部类的类名 + $+1+内部类名。(1表示局部内部类的顺序)
4、 类型
4.1成员内部类
4.1.1 概念:作为类的成员,存在于某个类的内部。(用法与成员变量类似)
4.1.2 位置:位于外部类的全局位置。
4.1.3 语法:public class OutClass {
public class student{ public void c(){ } }
4.1.4 访问修饰符:决定能否在第三方访问该内部类
4.1.4 特点:(1)在外部类的内部可以产生成员内部类的方法,可以访问外部类的所有的成员和方法,不受访问修饰符的限制。
(2) 不能定义static的属性和方法。 (3)可以访问外部类的任意属性和方法。 (4)使用this代表的是内部类对象。
(5)如果内部类属性与外部类属性同名:使用外部类类名.this.属性名调用外部类的属性;
如果内部类方法与外部类方法同名:使用外部类类名.this.方法名调用外部类的方法。
(6)可以在外部类里面直接产生内部类对象,然后无视访问修饰符视情况调用其属性和方法 (7)在第三方类中产生内部类对象,必须先产生外部类对象。 使用特殊外部类对象.new的语法产生内部类对象, 根据访问修饰符视情况调用属性和方法。
4.1.5 产生对象:可以在外部类的任意方法中,也可以在第三方类的方法中(考虑访问修饰符)
4.2 静态内部类
4.2.1 概念:作为类的静态成员,存在于某个类的内部。(是成员内部类的特例)
4.2.2 位置:位于外部类的全局位置,添加static 修饰符。
4.2.3 语法:
public static class student2{
public void c(){
}
}
4.2.4访问修饰符:决定能否在第三方访问该内部类。
4.2.5 特点:(1) 可以访问外部类中的静态成员和静态方法;
(2) 可以声明静态变量和成员变量,静态属性和成员属性; (3)只能访问外部类的静态属性和静态方法; (4)this代表内部类对象;
(5)如果属性方法出现同名的情况,用外部类类名.的方式访问外部类中的属性方法;
(6)只能访问外部类的静态属性和静态方法; (7)用对象名.的方式访问内部类的非static属性和方法,无视访问修饰符; (8)用内部类类名.的方式访问内部类的static属性和方法,无视访问修饰符;
(9)无需产生外部类对象,使用外部类类名.内部类类名的方式产生内部类对象;
(10)根据访问修饰符,调用属性和方法;
4.2.6产生对象:可以在外部类的任意方法中,也可以在第三方类的方法中(考虑访问修饰符)
4.3 局部内部类
4.3.1 概念:存在于某个方法内部的类。
4.3.2 位置:在外部类的某个方法内部。
4.3.3 语法:
public void study(){
class student3{
} }
4.3.4特点:(1)如果外部方法是静态方法,那么就不能访问外部类中的成员变量和成员方法.
(2)没有访问修饰符。
(3)只能定义非static的属性和方法
(4)如果局部内部类所在的方法是静态的,则不能访问外部类的非静态属性和方法;其他情况都可以访问。
(5)this代表当前内部类对象。
(6)如果内部类属性与外部类属性同名:使用外部类类名.this.属性名调用外部类的属性。
(7)如果内部类方法与外部类方法同名:使用外部类类名.this.方法名调用外部类的方法。 (8)无法访问内部类所在方法的变量,只能访问常量。 (9)直接new出来即可,无视访问修饰符视情况调用其属性和方法。
4.4 匿名内部类
4.4.1 概念:存在于某个类的内部,但是无类名的类。
4.3.2 语法:
new 类或者接口的名字( ){
//匿名内部类的主体 }
4.3.3访问修饰符:不存在。
4.3.4 特点:(1)只能定义非static的属性和方法
(2)如果outMethod是静态的,则不能访问外部类的非静态属性和方法;其他情况都可以访问
(3)this代表当前的匿名内部类对象 (4) 如果内部类属性与外部类属性同名:使用外部类类名.this.属性名调用外部类的属性 (5)如果内部类方法与外部类方法同名:使用外部类类名.this.方法名调用外部类的方法 (6)无法访问内部类所在方法--即outMethod()中的的局部变量,只能访问常量
相关文章推荐
- mybatis 下连接mysql各种问题
- flag刷新
- 在git上建立自己的博客
- 20145312 实验三《敏捷开发与XP实践》
- 团队冲刺站立会议04
- Android四大组件之Activity
- Liferay portal 6.1项目搭建及部署注意事项
- leetcode 80. Remove Duplicates from Sorted Array II
- C语言数组三
- 典型用户场景
- 2016.4.24
- Java语言泛型--->通配符
- 150. Evaluate Reverse Polish Notation
- Eclipse中的快捷键
- Beautiful Soup 示例解析html文件(python)
- shell comand
- qt设置控件的ICON
- Android json解析简单示例
- c语言基础深入理解二
- 输入法评价(微软自带输入法)