整理java读书笔记十五之java中的内部类

下面是整理 Java 读书笔记十五之 Java 中的内部类的完整攻略。

什么是Java中的内部类

Java中的内部类就是在一个类的内部定义另一个类。内部类可以看作是外部类的一个成员,和其他成员一样,可以被类访问控制修饰符所控制。与外部类不同的是,内部类可以直接访问外部类的成员,包括私有成员,这个特征非常有用。

Java中的内部类有如下几种形式:

形式 描述
成员内部类 在类的成员位置上定义的类,最常见的一种形式。
静态内部类 在类的成员位置上且被static修饰的类。
方法内部类 在方法内部定义的类。
匿名内部类 在方法内部或代码块内部定义的一种未命名的内部类。
局部内部类 在方法内部定义并且只在该方法内部可见的类。

成员内部类

成员内部类,又称为普通内部类,其定义格式如下:

class Outer {
    private int num;
    class Inner {
        public void innerMethod() {
            System.out.println("inner method " + num);
        }
    }
    public void outerMethod() {
        Inner inner = new Inner();
        inner.innerMethod();
    }
}

从上面的代码可以看出,成员内部类 Inner 是在类 Outer 的成员位置上定义的一个类。在 Inner 类内部可以直接访问 Outer 类的成员变量和方法。如果要在外部类中使用内部类,需要先创建一个内部类的对象,然后才能访问内部类的成员方法和成员变量。

public class Main {
    public static void main(String[] args) {
        Outer outer = new Outer();
        Outer.Inner inner = outer.new Inner();
        inner.innerMethod();
    }
}

上述代码中,创建了一个外部类的对象,然后通过这个对象创建了一个内部类的对象,最后使用内部类的对象调用了其 innerMethod 方法。

静态内部类

静态内部类与成员内部类不同的是,静态内部类被 static 修饰,在静态内部类中不能访问外部类的非静态成员,只能访问外部类的静态成员。静态内部类定义格式如下:

class Outer {
    private static int num;
    static class Inner {
        public void innerMethod() {
            System.out.println("inner method " + num);
        }
    }
}

静态内部类使用方法与成员内部类类似,同样需要通过对象或类名来调用。如果通过对象调用,需要先创建一个外部类的对象;如果通过类名调用,则可以直接使用类名。

public class Main {
    public static void main(String[] args) {
        Outer.Inner inner = new Outer.Inner();
        inner.innerMethod();
    }
}

上述代码中,通过类名直接创建静态内部类的对象,然后使用内部类的对象调用了其 innerMethod 方法。

总结

Java中的内部类有五种形式,分别是成员内部类、静态内部类、方法内部类、匿名内部类和局部内部类。

  • 成员内部类定义在外部类的成员位置上,可以直接访问外部类的成员变量和方法。
  • 静态内部类被 static 修饰,只能访问外部类的静态成员变量和方法。
  • 通过对象或类名来调用内部类,使用方法类似,但区别在于通过对象调用时需要创建一个外部类的对象。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:整理java读书笔记十五之java中的内部类 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • 微信为什么占好几个G的内存?清理微信占用内存的方法

    微信为什么占好几个G的内存? 微信占用大量内存的原因主要有以下几点: 聊天记录和媒体文件:微信保存了用户的聊天记录和接收的媒体文件,包括图片、视频、语音等。这些文件会占用大量的存储空间,尤其是当用户有大量聊天记录或频繁接收媒体文件时。 缓存数据:微信为了提高用户体验,会缓存一些数据,例如好友列表、公众号文章等。这些缓存数据也会占用一定的内存空间。 小程序和插…

    other 2023年8月2日
    00
  • python学习笔记3.1_数据读取常用函数参数

    Python学习笔记3.1 – 数据读取常用函数参数 在数据分析的过程中,数据的读取是很常见的任务。Python中提供了很多常用的数据读取函数,但很多初学者并没有掌握相关参数的使用方法。本文将介绍几个在数据读取过程中常用的函数参数,帮助读者更好地理解数据读取的过程。 1. read_csv函数参数 read_csv函数是Pandas库中用于读取csv文件的函…

    其他 2023年3月29日
    00
  • vue 封装 Adminlte3组件的实现

    下面是“Vue 封装 AdminLTE3 组件的实现”的完整攻略。 简介 AdminLTE是一套基于Bootstrap的后台管理模板,提供了多种UI组件和样式,通常用于开发后台管理系统。 而Vue则是一种快速的JavaScript框架,常被用于构建用户界面,它的组件化开发特性能够让开发者快速搭建UI组件库。 将Vue与AdminLTE3相结合,可以快速构建稳…

    other 2023年6月25日
    00
  • C++学习笔记之类与对象详解

    C++学习笔记之类与对象详解 1. 类与对象 在C++语言中,类是一种用户自定义的数据类型,它允许将数据和行为封装成一个对象,从而实现了面向对象的编程思想。而对象,则是类的具体化实例化。 1.1 类的定义 类的定义包含两个部分:类声明和类实现。 1.1.1 类的声明 类的声明通常在头文件中完成,它包含了类名、数据成员和成员函数的声明。 // 声明一个名为Pe…

    other 2023年6月27日
    00
  • Go中变量命名规则与实例

    Go中变量命名规则与实例攻略 在Go语言中,变量的命名规则是非常重要的,它能够提高代码的可读性和可维护性。下面是Go中变量命名的一些规则和示例说明: 1. 变量命名规则 变量名由字母、数字和下划线组成。 变量名必须以字母或下划线开头。 变量名区分大小写。 避免使用Go语言的关键字作为变量名。 2. 示例说明 示例1:基本变量命名 package main i…

    other 2023年8月8日
    00
  • React Hook用法示例详解(6个常见hook)

    首先需要明确的是React Hook是React16.8中加入的新特性,它可以让我们在不编写类的情况下使用state和其他React特性。 下面分别介绍React Hook中的6个常见hook及其用法示例: 1.useState import React, { useState } from ‘react’; function Example() { con…

    other 2023年6月27日
    00
  • js实现表格字段排序

    JS实现表格字段排序 简介 表格中的数据排序是表格中常见的需求之一。本文将介绍JavaScript如何实现表格数据的排序。通过使用JavaScript反转数组顺序、排序算法和DOM操作,我们可以动态将表格中的数据按照指定条件进行排序。 策略 对表格字段进行排序,我们需要执行以下几个步骤: 找到需要排序的表头元素。 为该元素绑定排序事件,例如点击事件。 在事件…

    other 2023年6月25日
    00
  • centos安装桌面版向日葵

    以下是CentOS安装桌面版向日葵的完整攻略: 1. 安装桌面环境 在CentOS中安装桌面版向日需要先安装桌面环境。可以按照以下步骤进行: 安装GNOME桌面环境 sudo yum groupinstall "GNOME Desktop" 在上面的命令中,使用“yum groupinstall”命令来安装GNOME桌面环境。 设置默认启…

    other 2023年5月8日
    00
合作推广
合作推广
分享本页
返回顶部