JAVA内部类 与 匿名内部类
来源:互联网 发布:淘宝达人账号简介范例 编辑:程序博客网 时间:2024/05/14 23:10
JAVA内部类 与 匿名内部类
1.内部类 分类: 1.1成员内部类 1.2局部内部类 1.3静态内部类 1.4匿名内部类
2. 成员内部类
public class Outer{
private static int i = 1;
private int j = 10;
private int k = 20;
public static void outer_f1(){
//do more something
}
public void out_f2(){
//do more something
}
//成员内部类
class Inner{
//static int inner_i = 100; //内部类中不允许定义静态变量
int j = 100; //这个变量和外部类的j变量名字一样,却可以共存
int inner_i = 1;
void inner_f1(){
System.out.println(i); //如果外部类成员变量 与 内部类的成员变量没有同名的,可以直接访问外部类的变量
System.out.println(j); //在内部类中访问内部类自己的成员变量 可以直接用 变量名访问
System.out.println(this.j); //可以在内部类中用"this.变量名"来访问内部类的成员变量j
System.out.println(Outer.this.j);//访问外部类中与内部类同变量名的变量
outer_f1();
outer_f2();
}
//外部类的非静态方法访问成员内部类 需要实例化内部类
public void outer_f3(){ //理解: 非静态方法属于对象所有,调用非静态方法时候可以保证类实例对象已经存在,
Inner inner = new Inner(); //所以不用 再实例化外部类 对象。
inner.inner_f1();
}
//外部类的静态方法访问成员内部类,与在外部类的外部访问成员内部类一样
public static void outer_f4{
Outer out = new Outer(); //建立外部类对象
Inner inner = out.new Inner(); //根据外部类对象 创建内部类对象
inner.inner_f1(); //访问内部类的方法
//理解: 静态方法属于类本身,此时如果要访问内部 非静态类的成员方法, 就要实例化出一个对象 才可访问它
// 静态方法,静态字段是属于类的!!!! 非静态方法,非静态方法是属于对象的!!!
}
}
private static int i = 1;
private int j = 10;
private int k = 20;
public static void outer_f1(){
//do more something
}
public void out_f2(){
//do more something
}
//成员内部类
class Inner{
//static int inner_i = 100; //内部类中不允许定义静态变量
int j = 100; //这个变量和外部类的j变量名字一样,却可以共存
int inner_i = 1;
void inner_f1(){
System.out.println(i); //如果外部类成员变量 与 内部类的成员变量没有同名的,可以直接访问外部类的变量
System.out.println(j); //在内部类中访问内部类自己的成员变量 可以直接用 变量名访问
System.out.println(this.j); //可以在内部类中用"this.变量名"来访问内部类的成员变量j
System.out.println(Outer.this.j);//访问外部类中与内部类同变量名的变量
outer_f1();
outer_f2();
}
//外部类的非静态方法访问成员内部类 需要实例化内部类
public void outer_f3(){ //理解: 非静态方法属于对象所有,调用非静态方法时候可以保证类实例对象已经存在,
Inner inner = new Inner(); //所以不用 再实例化外部类 对象。
inner.inner_f1();
}
//外部类的静态方法访问成员内部类,与在外部类的外部访问成员内部类一样
public static void outer_f4{
Outer out = new Outer(); //建立外部类对象
Inner inner = out.new Inner(); //根据外部类对象 创建内部类对象
inner.inner_f1(); //访问内部类的方法
//理解: 静态方法属于类本身,此时如果要访问内部 非静态类的成员方法, 就要实例化出一个对象 才可访问它
// 静态方法,静态字段是属于类的!!!! 非静态方法,非静态方法是属于对象的!!!
}
}
2.1 成员内部类优点:
2.1.2 内部类作为外部类的成员, 可以访问外部类的私有成员方法或属性(即使外部类成员权限申明为private,但是对于内部成员类是可见的)
2.1.3 对于外部类而言,实现了比private还要小的访问权限。(在内部类中 定义private权限,则外部类是无法访问的)
NOTE: 内部类是一个编译阶段的概念, 一旦编译完成,相当于完全不同的两类。对于一个名为outer的外部类和其内部定义的inner类。编译 完成后outer.class 和 outer$inner.class两类
2.1.2 内部类作为外部类的成员, 可以访问外部类的私有成员方法或属性(即使外部类成员权限申明为private,但是对于内部成员类是可见的)
2.1.3 对于外部类而言,实现了比private还要小的访问权限。(在内部类中 定义private权限,则外部类是无法访问的)
NOTE: 内部类是一个编译阶段的概念, 一旦编译完成,相当于完全不同的两类。对于一个名为outer的外部类和其内部定义的inner类。编译 完成后outer.class 和 outer$inner.class两类
0 0
- Java内部类与匿名内部类
- JAVA内部类 与 匿名内部类
- Java 内部类与匿名内部类
- Java 内部类与匿名内部类
- Java内部类与匿名内部类
- Java -> 内部类与匿名内部类
- JAVA匿名内部类
- java 匿名内部类
- JAVA匿名内部类
- java 匿名内部类
- JAVA匿名内部类
- java 匿名内部类
- JAVA匿名内部类
- java 匿名内部类
- JAVA匿名内部类
- Java匿名内部类
- JAVA匿名内部类
- java匿名内部类
- [LinkedIn] Find K nearest (closest) neighbors from point (comparator/comparable, priority queue )
- chrome 输入法无法切换问题
- 搜索/删除 Sql server 表中的重复值。
- SQLPLUS应用简介(一)
- 内存分析工具 MAT 的使用
- JAVA内部类 与 匿名内部类
- 云计算网络珠玑
- rdbuf流缓冲
- NGUI全面实践教程(大学霸内部资料)
- 删除外键约束
- 测试流程的规范性与重要性
- 用友U852 从后台数据库反启用资金管理
- extern C 用法
- AngularJS中一个HTML文档启动多个应用