JAVA面向对象之内部类

来源:互联网 发布:王者荣耀qq数据转微信 编辑:程序博客网 时间:2024/06/11 13:17

内部类

在一个类的内部声明的类,称为内部类(也叫内嵌类)。内部类只能在包含它的类中使用,同时它可以看作是该包含类的一段特殊代码,可以直接使用该包含类的变量和方法。
内部类编译后也会形成一个单独的class,但它附属于其包含类。创建内部类的对象时会有一个对外部类对象的引用,所以一般只能在非静态方法里创建内部类对象。
创建一个外部类Outer,在其非静态方法中调用内部类。

public class Outer {   int outer = 100;   //在外部类的方法中创建内部类的对象,并调用其方法   void test() {      Inner in = new Inner();      in.dispaly();   }   //内部类   public class Inner {      void dispaly() {         System.out.println("dispaly:outer =" + outer);      }   }}

从上面代码中可以看出,可以把一个类定义在另一个类中,这就是内部类。一般来说使用内部类有如下两点考虑:
1. 内部类使得程序代码更为紧凑,程序更具模块化。
2. 由于内部类被看作类中一段特殊的代码,其可以直接调用类中的成员,因此在一些复杂的调用关系中,使用内部类可以使成员间调用更加方便。

内部匿名类

匿名类就是没有名字的类,是将类和类的方法定义在一个表达式范围里。在内部类仅需要使用一次的时候,可以对代码进行简化,比如在《JAVA面向对象之抽象类和接口》中,我们定义了一个GraphicsCard接口,并且定义了一个AMDGraphicsCard 实现了该接口,如果我们要完成AMDGraphicsCard类所完成的功能且只需要用一次,那么我们就可以使用内部匿名类。这里我们定义一个Computer类来演示内部匿名类的使用。

public class Computer {   public void show(GraphicsCard card) {      card.dispaly();   }   public static void main(String[] args) {      Computer computer = new Computer();      //使用内部匿名类      computer.show(new GraphicsCard() {         public void dispaly() {            System.out.println("AMD显卡");         }      });   }}

以上就是内部匿名类的使用方式,在GUI编程中,我们会经常用到内部匿名类。

0 0