内部类的使用1--隐藏实现

来源:互联网 发布:java web服务器搭建 编辑:程序博客网 时间:2024/06/05 23:43

内部类的声明和调用语法

  • 内部类就是声明在其他类的内部的类。
  • 类中使用内部类,跟使用其他类没有什么不同。内部类作为一个成员跟其他变量也非常相像,能用final修饰,能访问其外部的变量等。
  • 在类外面创建一个外部类的实例时有两种方式。非静态时A.B ab = new A().new B()。静态的 A.B AB = A.new B();而通常情况下我们不会直接来new 这个类而是外部类提供一个方法给我们得到内部类的实例。
  • 另外一种使用办法是,你做了一件比较复杂的事情,但是又不想被人知道就可以使用内部类。

开发不依赖类型的代码,隐藏细节

有了内部类,就能够更好的实现封装代码的细节部分,比如有一个公用的接口,而使用私有内部类来实现这个接口,再通过外部类的方法返回接口的一个实例。
这样就使的,客户程序员只能使用引用来进行开发,阻碍了任何依赖于类型的代码,并完全隐藏了实现的细节。
例如:

方法或者作用域中的内部类

上面的代码除了把内部类声明在成员变量的位置外,还能直接声明在方法的内部,例如:

匿名内部类

像上面这种声明在方法内部的类,类名是没有作用的,因此有了声明匿名内部类的方法:

把return 和new 构造器卸载了一起,表示得到一个继承了Driver的实例。

这种用法最常见的就是在SWING图形见面开发的时候来定义事件监听器。
如果匿名内部类继承的类是有构造器参数的话,需要用return new Driver(param)来进行声明。

内部类使用外部类的变量

如果方法内的内部类(包括匿名内部类),需要直接使用其外面的变量(不包括构造器使用)则需要保证外部的变量为final类型的,否则会有编译错误。

 

 

原创粉丝点击