内部类精讲
2015-08-29 19:46
197 查看
内部类就是在一个类的内部定义的类,内部类中不能定义静态成员,内部类可以直接访问外部类的成员变量。内部类可以定义在外部类方法的内部,也可以定义在外部类方法的外部。
例如:
public class Out
{
int n = 0;
public void list()
{
int m = 0;
class Inter //方法体内部定义类
{
public void method()
{
n = 2;
}
}
}
public class Inter1 //方法体外部定义类
{
}
}
在方法体外面定义的类可以是共有类型、似有类型、保护类型以及默认的类型,这就好像是外部类的成员变量。对于这种情况在创建内部类时需要首先创建外部类的实例对象,然后再由外部实例对象去创建内部类。
例如:Out out = new Out();
out.Inter1 inter = out.new Inter1();
在方法体内部定义的类前面不能有访问类型修饰符,这些类就好像方法体内部的局部变量一样,他们对其他类是不可见的,其他类无法引用这种内部类。但是这些类的实例对象可以传递给其他类访问。这种内部类必须先定义后使用。这些类可以访问方法体内部的局部变量,但是这些局部变量必须用final修饰符修饰。
最后,如果在方法体外部定义的类前面加上static关键字,那么这个类就变成Static Nested Class,它就不再具有内部类的特征,它与普通类在运行和功能上没有任何区别。只是在编程引用上有一些差别。它可以定义成多种类型。普通类只能定义成公共以及默认的类型。在外面引用这种类时使用外部类名.内部类名的方式。这种类不能直接访问外部类的非静态成员变量,只有生成实例对象后由实例对象访问非静态成员变量。在静态方法中定义的类也属于这种类,但是不能在类前面加static关键字。
例如:
public class Out
{
int n = 0;
public void list()
{
int m = 0;
class Inter //方法体内部定义类
{
public void method()
{
n = 2;
}
}
}
public class Inter1 //方法体外部定义类
{
}
}
在方法体外面定义的类可以是共有类型、似有类型、保护类型以及默认的类型,这就好像是外部类的成员变量。对于这种情况在创建内部类时需要首先创建外部类的实例对象,然后再由外部实例对象去创建内部类。
例如:Out out = new Out();
out.Inter1 inter = out.new Inter1();
在方法体内部定义的类前面不能有访问类型修饰符,这些类就好像方法体内部的局部变量一样,他们对其他类是不可见的,其他类无法引用这种内部类。但是这些类的实例对象可以传递给其他类访问。这种内部类必须先定义后使用。这些类可以访问方法体内部的局部变量,但是这些局部变量必须用final修饰符修饰。
最后,如果在方法体外部定义的类前面加上static关键字,那么这个类就变成Static Nested Class,它就不再具有内部类的特征,它与普通类在运行和功能上没有任何区别。只是在编程引用上有一些差别。它可以定义成多种类型。普通类只能定义成公共以及默认的类型。在外面引用这种类时使用外部类名.内部类名的方式。这种类不能直接访问外部类的非静态成员变量,只有生成实例对象后由实例对象访问非静态成员变量。在静态方法中定义的类也属于这种类,但是不能在类前面加static关键字。
相关文章推荐
- PS序列号
- C++不能中断构造函数来拒绝产生对象(在构造和析构中抛出异常)
- (4.4.1.7)android 内存溢出问题分析
- 我的C++程序
- C++的运算符重载
- HttpURLConnection_Get和Post请求文件上传
- C中对于结构体成员的两种引用方式适用场合的区别
- Delphi编程中资源文件的应用
- 一步步学习Python-django开发-Mac下搭建Python-Django环境
- UI_动画
- Nginx基础. Nginx数组与链表
- PS学习笔记-----提示暂存盘满了怎么办???
- 传值和传引用、传指针的区别 --http://blog.csdn.net/a15994269853/article/details/23995383
- java编码问题
- Linux第3天
- 【C/C++】纯虚函数
- HTTP协议详解
- leetcode Minimum Size Subarray Sum
- 1050. String Subtraction (20)
- Java mail 环境安装