JAVA面向对象之内部类

简介:

内部类

在一个类的内部声明的类,称为内部类(也叫内嵌类)。内部类只能在包含它的类中使用,同时它可以看作是该包含类的一段特殊代码,可以直接使用该包含类的变量和方法。
内部类编译后也会形成一个单独的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编程中,我们会经常用到内部匿名类。

目录
相关文章
|
23天前
|
搜索推荐 Java
Java的面向对象特性主要包括封装、继承和多态
【4月更文挑战第5天】Java的面向对象特性主要包括封装、继承和多态
15 3
|
1月前
|
Java
java中,剩下的这两个内部类不太好理解!
java中,剩下的这两个内部类不太好理解!
12 0
|
1月前
|
Java 编译器
java中常见的几种内部类,你会几个?(未完)
java中常见的几种内部类,你会几个?(未完)
14 1
|
1月前
|
Java
java面向对象高级分层实例_实体类
java面向对象高级分层实例_实体类
10 1
|
3天前
|
安全 Java
Java基础&面向对象&继承&抽象类
Java基础&面向对象&继承&抽象类
|
4天前
|
Java
【Java基础】详解面向对象特性(诸如继承、重载、重写等等)
【Java基础】详解面向对象特性(诸如继承、重载、重写等等)
8 0
|
9天前
|
安全 Java 机器人
《Java 简易速速上手小册》第2章:面向对象的 Java(2024 最新版)
《Java 简易速速上手小册》第2章:面向对象的 Java(2024 最新版)
19 0
|
12天前
|
存储 Java
Java基础教程(7)-Java中的面向对象和类
【4月更文挑战第7天】Java是面向对象编程(OOP)语言,强调将事务抽象成对象。面向对象与面向过程的区别在于,前者通过对象间的交互解决问题,后者按步骤顺序执行。类是对象的模板,对象是类的实例。创建类使用`class`关键字,对象通过`new`运算符动态分配内存。方法包括构造函数和一般方法,构造函数用于对象初始化,一般方法处理逻辑。方法可以有0个或多个参数,可变参数用`类型...`定义。`this`关键字用于访问当前对象的属性。
|
16天前
|
安全 Java 编译器
接口之美,内部之妙:深入解析Java的接口与内部类
接口之美,内部之妙:深入解析Java的接口与内部类
35 0
接口之美,内部之妙:深入解析Java的接口与内部类
|
16天前
|
存储 Java 编译器
对象的交响曲:深入理解Java面向对象的绝妙之处
对象的交响曲:深入理解Java面向对象的绝妙之处
47 0
对象的交响曲:深入理解Java面向对象的绝妙之处