java(24) - 内部类详解
来源:互联网 发布:无线键盘软件下载 编辑:程序博客网 时间:2024/06/04 19:43
一.内部类:
1).内部类的定义:通俗的讲就是在一个类的里面再定义一个类。
2).内部类可以public,private,protected等修饰,也可以是静态static。
二.四种内部类的实现:
1).静态内部类:
例子:
class InnerClass {public static int count = 10;//静态内部类public static class Inner{public void print(){System.out.println(count);}}}public class StaticInnerClass { public static void main(String[] args) {InnerClass.Inner inner = new InnerClass.Inner();inner.print();}}
结果:10
静态内部类只能访问外部类的静态成员变量与静态方法。因为内部类被静态化,所以可以直接new出内部类的对象。
2).成员内部类:
例子:
class MemberClass{public int count = 10;public static int number = 1;//成员内部类public class Inner{public void print(){ System.out.println(count+" "+number);}}}public class MemberClassTest {public static void main(String[] args) {//通过外部类的对象,new出内部类对象。MemberClass.Inner mem = (new MemberClass()).new Inner(); mem.print();}}
结果: 10 1 成员内部类作为外部类的成员,可以直接使用外部类的所有成员和方法,内部类对象的创建要先创建外部类的对象才能创建内部类对象:OuterClass.InnerClass inner = (new OuterClass()).new innerClass(); 如果想在成员内部类使用外部类的成员变量则需要:OuterClass.this.变量名。
3).局部内部类 :
例子:
class LocalInnerClass{public void test(){class Inner{public void print(){System.out.println("HAHA");}}new Inner().print();}}public class LocalInnerClassTest {public static void main(String[] args) {LocalInnerClass inn = new LocalInnerClass();inn.test();}}
结果:HAHA
局部内部类是指定在方法或作用域中的。只能在该方法或作用域中使用,退出这些作用域之后则无法使用。
局部内部类只能访问方法中用final类型的变量。
4).匿名内部类:
例子:
class AnonymousClass{@SuppressWarnings("deprecation")public void print(Date data){ System.out.println(data.toLocaleString());}}public class AnonymousClassTest {public static void main(String[] args) {AnonymousClass an = new AnonymousClass();an.print(new Date());an.print(new Date(){@Override@Deprecatedpublic String toLocaleString() {// TODO Auto-generated method stubreturn "HAHA";}});}}
结果:
2015-3-17 21:28:11
HAHA
匿名内部类隐式的继承一个父类或一个接口。匿名内部类是不能加访问修饰符的。这种内部类用在事件上比较多。
0 0
- java(24) - 内部类详解
- java内部类详解
- Java内部类详解
- 详解 java 内部类
- java内部类详解
- java内部类详解
- java 内部类详解
- 【java】内部类详解
- java内部类详解
- java 内部类详解
- java内部类详解
- java内部类详解
- Java内部类详解
- java 内部类详解
- java内部类详解
- JAVA内部类详解
- java内部类详解
- java 内部类详解
- 安装loadrunner
- 深入理解Java多态性
- maven初步
- jQuery.data() 的实现方式
- 13、自定义控件之开关
- java(24) - 内部类详解
- strcmp()字符串比较函数
- myeclipse10.0上装maven3插件
- UART接口
- 使用CoCos2dx-3.4开发一套可以商用的跑酷游戏 之二 视频演示
- Container With Most Water
- 简单排序集锦
- 欢迎使用CSDN-markdown编辑器
- 【BZOJ 2822】 [AHOI2012]树屋阶梯