JAVA中的内部类
2016-01-28 23:18
447 查看
内部类的顾名思义就是定义在一个类里面的类,如下两个Test类都是内部类
Class Person{
private String name;
private int age;
}
Class Test1{
private class Person;
……
}
Class Test2{
public getName(){
private class Person;
……
}
}
内部类可以定义在类中的任何地方,可以作为属性,也可以定义在方法中。
之所以使用内部类,是因为内部类可以方便的访问外部类的私有成员。如下用Inner类中的print()函数打印Outer类中的私有属性的两种实现方式:
第一种方式,不使用内部类:
Class Outer{
private String name="Hello World";
public fun(){
new Inner(this).print();
}
public getName(){
return this.name;
}
}
Class Inner{
private Outer out;
public Inner(Outer out){
this.out=out;
}
public print(){
System.out.println("name值是"+this.out.getName());
}
}
public class Test{
public static void main(String arg[]){
new Outer().fun();
}
}
第二种方式,使用内部类:
Class Outer{
private String name="Hello World";
Class Inner{
public void print(){
System.out.println("name值是"+this.name);
}
}
public void fun(){
new Inner().print();
}
}
public Class Test{
public static void main(String args[]){
new Outer().fun();
}
}
由此可见,内部类虽然结构混乱,但是,能方便的访问外部类的私有成员,所以有其重要的用处,在各种框架中应用尤其普遍。
内部类的实例化方式如下:
外部类.内部类 内部类对象 = 外部类实例.new 内部类实例();
例如:Outer out = new Outer();Outer.Inner in =out.new Inner();
其中比较特殊的是用static声明的内部类,可以通过外部类.内部类来访问。
另外,在方法中定义的内部类,可以直接访问外部类中的各个成员,但是如果要访问方法中的参数,则在参数前要加上final关键字声明。
Class Person{
private String name;
private int age;
}
Class Test1{
private class Person;
……
}
Class Test2{
public getName(){
private class Person;
……
}
}
内部类可以定义在类中的任何地方,可以作为属性,也可以定义在方法中。
之所以使用内部类,是因为内部类可以方便的访问外部类的私有成员。如下用Inner类中的print()函数打印Outer类中的私有属性的两种实现方式:
第一种方式,不使用内部类:
Class Outer{
private String name="Hello World";
public fun(){
new Inner(this).print();
}
public getName(){
return this.name;
}
}
Class Inner{
private Outer out;
public Inner(Outer out){
this.out=out;
}
public print(){
System.out.println("name值是"+this.out.getName());
}
}
public class Test{
public static void main(String arg[]){
new Outer().fun();
}
}
第二种方式,使用内部类:
Class Outer{
private String name="Hello World";
Class Inner{
public void print(){
System.out.println("name值是"+this.name);
}
}
public void fun(){
new Inner().print();
}
}
public Class Test{
public static void main(String args[]){
new Outer().fun();
}
}
由此可见,内部类虽然结构混乱,但是,能方便的访问外部类的私有成员,所以有其重要的用处,在各种框架中应用尤其普遍。
内部类的实例化方式如下:
外部类.内部类 内部类对象 = 外部类实例.new 内部类实例();
例如:Outer out = new Outer();Outer.Inner in =out.new Inner();
其中比较特殊的是用static声明的内部类,可以通过外部类.内部类来访问。
另外,在方法中定义的内部类,可以直接访问外部类中的各个成员,但是如果要访问方法中的参数,则在参数前要加上final关键字声明。
相关文章推荐
- springmvc启动过程
- Java poi excel 此文件中某些文本格式可能已经更改
- Java常见错误汇总
- struts2乱码
- java基础【多线程】
- 1.28 Java基础总结 ①方法重载②构造方法
- struts2之OGNL表达式
- 1.27 Java基础总结 ①访问修饰符访问权限②类和方法的基本声明和使用1.27 Java基础总结 ①访问修饰符访问权限②类和方法的基本声明和使用
- Java Vector 介绍
- 在Eclipse中用Maven创建Servlet实现输出Hello World
- struts2带参数的结果集
- struts2动态结果
- Java - 集合基础
- java中的接口回调机制
- jdk1.6官方下载地址
- struts2的表单标签
- JavaSE入门学习16:Java面向对象之重写(Override)和重载(Overload)
- struts2-通过action从后台将json数据传到前台的方法(二)
- struts2全局结果
- Spring 3 MVC And JSR303 @Valid Example