更多 Java 基础知识方面的文章,请参见文集《Java 基础知识》

成员内部类 member inner class

在类的内部

可以访问外部类的所有属性,包括 static 和 final,因此可以修改外部类

如下所示:

内部类 Inner 可以访问外部类 Outer 的成员变量 i

外部类 Outer 可以使用内部类 Inner

如果想在其他地方使用内部类 Inner,需要通过外部类的对象来访问

public class InnerClass_Test {

public static void main(String[] args) {

Outer outer = new Outer();

outer.f1();

// 如果想在其他地方使用内部类 Inner,需要通过外部类的对象来访问

// Outer.Inner inner = new Outer.Inner() 编译错误

Outer.Inner inner = outer.new Inner();

inner.f2();

}

}

class Outer {

private int i = 1;

public void f1() {

// 外部类 Outer 可以使用内部类 Inner

Inner i = new Inner();

i.f2();

}

// 内部类 Inner 可以访问外部类 Outer 的成员变量

class Inner {

public void f2() {

i = 2;

}

}

}

局部内部类 local inner class

在类的方法的内部定义并使用

不能在方法的外部访问内部类

内部类只能访问方法中的 final 变量,不能访问方法外的变量

例如:

public class InnerClass_Test {

public static void main(String[] args) {

Outer outer = new Outer();

outer.f1();

}

}

class Outer {

public void f1() {

// 在类的方法的内部

class Inner {

public void f2() {

// do something

}

}

Inner i = new Inner();

i.f2();

}

}

匿名内部类 anonymous inner class

继承式

public class InnerClass_Test {

public static void main(String[] args) {

Car c = new Car() {

public void f() {

System.out.println("This is BMW");

}

};

c.f();

}

}

class Car {

public void f() {

System.out.println("This is car");

}

}

接口式

public class InnerClass_Test {

public static void main(String[] args) {

Run r = new Run() {

public void f() {

System.out.println("This is BMW running");

}

};

r.f();

}

}

interface Run {

void f();

}

参数式

public class InnerClass_Test {

public static void main(String[] args) {

invoke(new Car() {

public void f() {

System.out.println("This is BMW");

}

});

}

public static void invoke(Car c) {

c.f();

}

}

class Car {

public void f() {

System.out.println("This is car");

}

}

静态嵌套类 static nested class

与成员内部类不同,在外部使用静态嵌套类,不需要通过外部类的对象来访问。

public class InnerClass_Test {

public static void main(String[] args) {

// 在外部使用静态嵌套类,不需要通过外部类的对象来访问

Outer.Nested_Outer n = new Outer.Nested_Outer();

n.f();

}

}

class Outer {

static class Nested_Outer {

public void f() {

System.out.println("This is nested class");

}

}

}

java inner class_Java Inner Class 内部类相关推荐

  1. java基础(十三)-----详解内部类——Java高级开发必须懂的

    java基础(十三)-----详解内部类--Java高级开发必须懂的 目录 为什么要使用内部类 内部类基础 静态内部类 成员内部类 成员内部类的对象创建 继承成员内部类 局部内部类 推荐博客 匿名内部 ...

  2. java成员内部类_Java中的内部类(二)成员内部类

    Java中的成员内部类(实例内部类):相当于类中的一个成员变量,下面通过一个例子来观察成员内部类的特点 public classOuter {//定义一个实例变量和一个静态变量 private int ...

  3. Java面向对象编程篇4——内部类

    Java面向对象编程篇4--内部类 1.内部类的概念 当一个类的定义出现在另外一个类的类体中时,那么这个类叫做内部类 (Inner),而这个内部类所在的类叫做外部类(Outer). 类中的内容:成员变 ...

  4. java类修饰词和内部类详解

    java类修饰词和内部类详解 控制属性: 同一类内     同一包内      子类     所有类 public            可             可         可       ...

  5. Java编程笔记7:内部类

    Java编程笔记7:内部类 图源:PHP中文网 所谓的内部类,其实就是定义在类中的类.这和Java编程笔记6:接口 - 魔芋红茶's blog (icexmoon.xyz)中提到的接口嵌套的方式有点相 ...

  6. java中class_JAVA中的Class类

    前言 Class类是一个看起来熟悉又看起来陌生的类,平时常常用到它,但却从来没有创建过它的实例对象,因为它的构造函数是私有的,只有虚拟机才能够创建它的对象,但是它绝对是一个核心类,以至于要学好java ...

  7. java中有几种内部类,Java中的四种内部类

    四种内部类 在Java 中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类.广泛意义上的 内部类一般来说包括这四种:静态内部类.匿名内部类.成员内部类和局部内部类,下面我们一一介绍 ...

  8. java中class_Java中Class对象详解

    https://blog.csdn.net/mcryeasy/article/details/52344729 待优化整理 总结 Class类简介 在java世界里,一切皆对象.从某种意义上来说,ja ...

  9. Java面向对象(21)--内部类

    当一个事物的内部,还有一个部分需要一个完整的结构进行描述,而这个内部的完整的结构又只为外部事物提供服务,那么整个内部的完整结构最好使用内部类. 在Java中,允许一个类的定义位于另一个类的内部,前者称 ...

  10. JAVA进阶开发之(内部类概述)

    匿名内部类(相当于此类没有名字): 1.什么是内部类:在类的内部又定义了一个新的类 2.内部类的分类: 静态内部类:类似静态变量 实例内部类:类似实例变量 局部内部类:类似局部变量 3.使用内部类编写 ...

最新文章

  1. [改善Java代码]用整数类型处理货币
  2. ATOM editor recommended by Sean
  3. 开源项目|从0到1教你搭建一个适配于智能车的目标检测系统
  4. 优地机器人厂家_2019中国人工智能机器人企业TOP30榜单发布 优地科技跻身前十...
  5. 记录下最近使用到的sql语句
  6. c++容器之vector
  7. Linux PS 命令详解
  8. 一个学习Python的好链接
  9. Exchange2013 企业部署解决方案-Part 2
  10. 以盛唐气象,浇胸中块垒:熊逸《唐诗50讲》学习笔记汇总
  11. Monitor线程同步
  12. 骑士人才系统4.0,5.0火车头数据抓取
  13. Apache 绿色版本官方版本下载
  14. centos下espeak文本转语音的代码实现
  15. Linux内核4.14版本——mmc core(7)——mmc core主模块(3)总线io setting相关(struct mmc_ios)
  16. 在Mac系统中将html网页转成PDF格式
  17. 下载IE6安装文件到本地的方法
  18. 那些年不容错过的115家硅谷IT公司
  19. 【Unity3D基础2-9】Unity3D烘焙系统的使用
  20. 《2021大数据产业年度创新服务企业》榜重磅发布丨金猿奖

热门文章

  1. 进程间通信之管道与有名管道
  2. IT工作十年总结之14个单据通用字段
  3. SqlServer修改密码后登陆不上
  4. java web 开发需要用到的技术
  5. Redis(一)入门
  6. 第三方接口,消息保障性发送机制
  7. Visual Studio 2013无法打开IIS Express Web的解决办法
  8. Icacls管理工具的使用
  9. 给博客添加搜狗云输入法
  10. Debian下配置iSCSI Target。