码迷,mamicode.com
首页 > 编程语言 > 详细

【JAVA】java内部类分析详解

时间:2015-10-24 21:53:20      阅读:259      评论:0      收藏:0      [点我收藏+]

标签:

内部类:

       正常的类是定义在一个.java文本文件的最外层的,也就是,定义一个类,这个类外面没有任何包含{}作用域的元素了,但是内部类是定义在某个类内部的类。

       为什么java要提供这样的类定义方式呢?因为如果向往常一样定义一个类,那么要么是public class Cls ,要么是 class Cls,想要用这些类,直接引用即可,但是当编程时如果需要需要定义一个类,却只想让某一个类用到这个类,不希望这个类被其他人使用,就用到内部类了。

 

Java中的内部类分四种

1.       非静态内部类

a)         成员内部类 member inner class

b)        局部内部类 local inner class

c)         匿名内部类 anonymous inner class

2.       静态内部类 static inner class (嵌套类 nested class

 

 

非静态内部类

       非静态内部类就是没有static关键字修饰的类

       需要让内部类和他的外部类之间有交互时使用

 

 

成员内部类:

       内部类定义的位置在类中的成员位置,也就是说在类中的最外层的{}里面

       成员内部类可以保证让内部类访问外部类的所有成员包括私有的,包括静态的

       外部类之外访问: 外部类.内部类

       外部类之外new:要用一个已存在的内部类对象new p.new Inner()

       内部类访问他的外部类成员:外部类.this.成员

局部内部类:

       定义在某个成员方法中,类似于局部变量的类

       用法与局部变量相同,不能用public等修饰

       能访问在该方法的其他位置定义的final变量,非final不可

       能访问该方法所在类的成员

 

       只能在该方法的作用域中使用,也就是外部类不能使用,外部类之外更不能使用

静态内部类:

  静态内部类就是嵌套类

  内部类中只能访问外部类的静态成员(这点与成员内部类不同),因为static在静态存储区

  在外部类之外声明用 外部类.内部类 

  在类外new  直接 new 外部类.内部类即可,因为不存在对象。

    

匿名内部类:

  不包含名字的内部类

  在定义时就产生一个对象并且只使用这一次

  常常用于在给一个函数传入某个参数时使用

  定义一个匿名内部类,必须是在一直某个父类或者接口的情况下定义。

  定义格式是  new 父类或接口() {  成员  };

  匿名内部类因为是匿名的,所以没有构造方法,想要实现构造方法的功能要用构造代码块 {}

  匿名内部类只能访问final局部变量,因为它实际上是一个局部内部类的变种

  匿名内部类创建时隐式调用了父类的构造方法,如果父类的构造有参数,那么必须在()括号中传入(x) 此时不需要final  

 

 

 

 

注:

  下划线代表仍存在疑问。  

Java中的内部类分四种:

1.       非静态内部类

a)         成员内部类 member inner class

b)        局部内部类 local inner class

c)         匿名内部类 anonymous inner class

2.       静态内部类 static inner class (嵌套类 nested class

内部类:

       内部类是定义在某个类内部的类。

       当编程时需要需要定义一个类,却只想让某一个类用到这个类时使用。

非静态内部类

       非静态内部类就是没有static关键字修饰的类

       需要让内部类和他的外部类之间有交互时使用

成员内部类:

       内部类定义的位置在类中的成员位置,也就是说在类中的最外层的{}里面

       成员内部类可以保证让内部类访问外部类的所有成员包括私有的,包括静态的

       在外部类之外访问: 外部类.内部类

       在外部类之外new:要用一个已存在的内部类对象来new p.new Inner()

       在内部类访问他的外部类成员:外部类.this.成员

局部内部类:

       定义在某个成员方法中,类似于局部变量的类

       用法与局部变量相同,不能用public等修饰

       能访问在该方法的其他位置定义的final变量,非final不可

       能访问该方法所在类的成员

       只能在该方法的作用域中使用。

【JAVA】java内部类分析详解

标签:

原文地址:http://www.cnblogs.com/heanqing/p/4907664.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!