Java基础—内部类

  在Java语言中,可以把一个类定义到另一个类的内部,在类里面的这个类就叫作内部类,外面的类叫作外部类。在这种情况下,这个内部类可以被看成外部类的是一个成员(与类的属性和方法类似)。还有一种类被称为顶层(Top-level)类,指的是类定义代码不嵌套在其他类定义中的类。

  内部类主要有以下四种:静态内部类、成员内部类、局部内部类和匿名内部类。

1、静态内部类

class outerClass{
    static class innerClass{}    //静态内部类
}

  静态内部类是指被声明为static的内部类,它可以不依赖于外部类实例而被实例化,而通常的内部类需要在外部类实例化后才能实例化。静态内部类不能与外部类具有相同的名字,不能访问外部类的普通成员变量,只能访问外部类中的静态成员和静态方法(包括私有类型)。

2、成员内部类

class outerClass{
  class innerClass{}     //成员内部类(普通内部类)
}

  一个静态内部类,如果去掉“static”关键字,就成为成员内部类。成员内部类为非静态内部类,它可以自由地引用外部类的属性和方法。只有在外部的类被实例化后,这个内部类才能被实例化。需要注意的是,非静态内部类中不能有静态成员。

3、局部内部类

class outerClass{
  public void menberFunction(){
    class innerClass{}  //局部内部类
  }
}

  局部内部类指的是定义在一个代码块内的类,它的作用范围为其所在的代码块,是内部类中最少使用到的一种类型。局部内部类像局部变量一样,不能被public、protected、private以及static修饰。对一个静态内部类,去掉其声明中的“static”关键字,将其定义移入其外部类的静态方法或静态初始化代码段中就成为局部静态内部类。对一个成员类,将其定义移入其外部类的实例方法或实例初始化代码中就成为局部内部类。局部静态内部类与静态内部类的基本特性相同。局部内部类与内部类的基本特性相同。

4、匿名内部类

public class MyFrame extends Frame{  //外部类
  public MyFrame (){
    addWindowListener(new WindowAdapter){  //匿名内部类
      public void windowClosing(WindowEvent e){
        dispose();
        System.exit(0);
      }
    }
  }
}

  匿名内部类是一种没有类名的内部类,不使用关键字class、extends和implements,没有构造方法,它必须继承(Extends)其他类或实现其他接口。匿名内部类的一般好处是代码更加简洁、紧凑,但带来的问题是易读性下降。它一般应用于GUI(图形用户界面)编程中实现事件处理等。

原文地址:https://www.cnblogs.com/myl0205/p/11371618.html

时间: 2024-08-03 08:11:33

Java基础—内部类的相关文章

黑马程序员——java基础——内部类

 黑马程序员--java基础--内部类 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 内部类 如果A类需要直接访问B类中的成员,而B类又需要建立A类的对象.这时,为了方便设计和访问,直接将A类定义在B类中.就可以了.A类就称为内部类.内部类可以直接访问外部类中的成员.而外部类想要访问内部类,必须要建立内部类的对象. 内部类的访问规则 1,内部类可以直接访问外部类中的成员,包括私有. 之所以可以直接访问外部类中的成员,是因为内部类中持有

JAVA基础——内部类详解

JAVA内部类详解 在我的另一篇java三大特性的封装中讲到java内部类的简单概要,这里将详细深入了解java内部类的使用和应用. 我们知道内部类可分为以下几种: 成员内部类 静态内部类 方法内部类 匿名内部类 这里我们先将以这个分类来详细了解各个内部类的情况.然后给内部类作出总结. 一.成员内部类 内部类中最常见的就是成员内部类,也称为普通内部类.我们来看如下代码: 运行结果为: 从上面的代码中我们可以看到,成员内部类的使用方法: 1. Inner 类定义在 Outer 类的内部,相当于 O

Java基础-内部类

在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类.广泛意义上的内部类一般来说包括这四种:成员内部类.局部内部类.匿名内部类和静态内部类. 下面就先来了解一下这四种内部类的用法. 1.成员内部类 成员内部类是最普通的内部类,它的定义为位于另一个类的内部,形如下面的形式: class Circle { double radius = 0; public Circle(double radius) { this.radius = radius; } class Draw

Java基础-内部类-为什么局部和匿名内部类只能访问局部final变量

先看下面这段代码: public class Test { public static void main(String[] args) { } public void test(final int b) { final int a = 10; new Thread(){ public void run() { System.out.println(a); System.out.println(b); }; }.start(); } } 这段代码会被编译成两个class文件:Test.class

Java基础-内部类-为什么成员内部类可以无条件访问外部类

在此之前,我们已经讨论过了成员内部类可以无条件访问外部类的成员,那具体究竟是如何实现的呢?下面通过反编译字节码文件看看究竟.事实上,编译器在进行编译的时候,会将成员内部类单独编译成一个字节码文件,下面是Outter.java的代码: public class Outter { private Inner inner = null; public Outter() { } public Inner getInnerInstance() { if(inner == null) inner = new

java基础内部类(毕向东老师)

内部类//特点:内部类可以直接访问外部类的成员,//外部类要访问内部类中的成员必须创建内部类的对象. //为什么要定义内部类呢?类是用于描述事物的,而事务中如果还有具体的事物,而且这个内部的事物在访问着所属事物中的内容,这时这个内部的事物,也需要用到类来描述.这个类就是内部类.为什么内部类可以直接访问外部类的成员?因为内部类都持有一个外部类的引用.外部类名.this. static class Inner{int num=5;void method(){{int num=6;System.out

黑马程序员-java基础-内部类和匿名内部类

外部类中如果含有一个接口,那个接口默认是static 内部的访问特点: A:内部类可以直接访问外部类的成员(成员变量.成员方法),包括私有成员. 之所以可以访问外部成员,是因为内部类持有外部对象的引用 B:外部类要访问内部类的成员,必须创建对象. 内部类位置 成员位置:在成员位置定义的类,被称为成员内部类. 局部位置(成员方法里面):在局部位置定义的类,被称为局部内部类. 成员内部类: 可以直接访问外部类成员 如何直接访问内部类的成员. 外部类名.内部类名 对象名 = 外部类对象.内部类对象;

Java基础面试:集合、内部类、线程

package test; import java.util.Hashtable; import java.util.Map; public class test { public static String change(String param){ param=null; return param; } public static void main(String[] args) { String param1="p1"; param1=change(param1); Map ta

java基础之:详解内部类(转载)

可以将一个类的定义放在另一个类的定义内部,这就是内部类. 内部类是一个非常有用的特性但又比较难理解使用的特性(鄙人到现在都没有怎么使用过内部类,对内部类也只是略知一二). 第一次见面 内部类我们从外面看是非常容易理解的,无非就是在一个类的内部在定义一个类. [java] view plain copy print? public class OuterClass { private String name ; private int age; public String getName() {