什么是内部类?

1.内部类也是一个类;

2.内部类位于其他类声明内部。

内部类的常见类型

1.成员内部类

2.局部内部类

3.匿名内部类

4.静态内部类

简单示例

/**
* 外部类
*
*/
public class OuterClass { private String s = "private String from OuterClass"; private String fs = "final String from OuterClass"; /**
* 成员内部类,字面上理解就是外部类的一部分。类似外部类的属性或方法
* 外部类的属性和方法对于内部类都是可以访问的,包括private属性方法
* 调用方法 外部类名。this。属性或方法
*/
class PartnerClass
{
public void print()
{
System.out.println("this comes from PartnerClass and can get "+OuterClass.this.s);
OuterClass.this.print();
}
} private void print()
{
System.out.println("private method form OuterClass");
/**
* 局部内部类只可以在一定范围内被访问
*/
class Part
{
void print()
{
System.out.println("this comes from part class and can get "+ OuterClass.this.s);
}
} new Part().print();
} interface Anonymous
{
void print();
} /**
* 匿名内部类多为已经定义好的接口或抽象类,在需要使用的地方采取进行具体实现
* 同成员内部类类似
*/
Anonymous anyms = new Anonymous() { @Override
public void print() {
System.out.println("this comes from a anonymous class and can get "+OuterClass.this.fs);
OuterClass.this.print();
}
}; /**
* 静态内部类只能访问外部类的静态属性和方法
* 静态内部类可以通过new OuterClass。StaticClass()的方式创建静态内部类对象
*/
private static class StaticClass implements Anonymous
{ @Override
public void print() {
System.out.println("this comes from static inner class");
} } public static void main(String[] args) { OuterClass outer = new OuterClass();
/**
* 外部类可以创建获取内部类对象
* 创建方法为 new 外部类().new 内部类()
*/
outer.new PartnerClass().print(); outer.anyms.print(); StaticClass sc = new OuterClass.StaticClass();
sc.print();
} }

内部类有什么用处?

1.隐藏类名和具体实现细节

2.内部类可以访问外部类的属性和方法

3.内部类可以用来实现闭包和回调

4.内部类可以用来实现多重继承

5.封装数据进行传值

个人内部类使用经验不多,以后有用到会补充进来

java基础 内部类详解的更多相关文章

  1. JAVA基础——内部类详解

    JAVA内部类详解 在我的另一篇java三大特性的封装中讲到java内部类的简单概要,这里将详细深入了解java内部类的使用和应用. 我们知道内部类可分为以下几种: 成员内部类 静态内部类 方法内部类 ...

  2. Java修炼——内部类详解

    内部类详解 定义:将一个类定义在另一个类的内部,该类就称为内部类 类中定义的内部类特点: 内部类作为外部类的成员,可以直接访问外部类的成员 (包括 private 成员),反之则不行. 内部类做为外部 ...

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

    可以将一个类的定义放在另一个类的定义内部,这就是内部类. 为什么要使用内部类 为什么要使用内部类?在<Think in java>中有这样一句话:使用内部类最吸引人的原因是:每个内部类都能 ...

  4. Java基础数据类型详解

    在Java中的数据类型一共有8种,大致分为整型(4个)浮点型(2个)布尔(1)字符(1个) 分类 类型 默认值 占用字节 范围 整型 byte 0 1 = 8 bit -2^7 - 2^7 short ...

  5. JAVA基础——异常详解

    JAVA异常与异常处理详解 一.异常简介 什么是异常? 异常就是有异于常态,和正常情况不一样,有错误出错.在java中,阻止当前方法或作用域的情况,称之为异常. java中异常的体系是怎么样的呢? 1 ...

  6. java基础:数组详解以及应用,评委打分案例实现,数组和随机数综合,附练习案列

    1.数组 1.1 数组介绍 数组就是存储数据长度固定的容器,存储多个数据的数据类型要一致. 1.2 数组的定义格式 1.2.1 第一种格式 数据类型[] 数组名 示例: int[] arr;     ...

  7. Java基础 - 异常详解

    异常的层次结构 Throwable Throwable 是 Java 语言中所有错误与异常的超类. Throwable 包含两个子类:Error(错误)和 Exception(异常),它们通常用于指示 ...

  8. 【干货】用大白话聊聊JavaSE — ArrayList 深入剖析和Java基础知识详解(二)

    在上一节中,我们简单阐述了Java的一些基础知识,比如多态,接口的实现等. 然后,演示了ArrayList的几个基本方法. ArrayList是一个集合框架,它的底层其实就是一个数组,这一点,官方文档 ...

  9. Java基础——枚举详解

    前言: 在第一次学习面向对象编程时,我记得最深的一句话就是“万物皆对象”.于是我一直秉承着这个思想努力的学习着JAVA,直到学习到枚举(Enum)时,看着它颇为奇怪的语法……我一直在想,这TM是个什么 ...

随机推荐

  1. 编译sifive的freedom-u-sdk

    在其它电脑搭建编译该sdk工程的环境,由于所在电脑的linux系统为新装系统(版本:Ubuntu 20.04 LTS),下面记录了编译过程中遇到的问题,以及解决过程供以后参考 问题1:error &q ...

  2. 自定义值类型一定不要忘了重写Equals,否则性能和空间双双堪忧

    一:背景 1. 讲故事 曾今在项目中发现有同事自定义结构体的时候,居然没有重写Equals方法,比如下面这段代码: static void Main(string[] args) { var list ...

  3. Java实现 LeetCode 45 跳跃游戏 II(二)

    45. 跳跃游戏 II 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的跳跃次数到达数组的最后一个位置. 示例: 输入: [ ...

  4. Java实现有理数的循环节

    1/7 = 0.142857142- 是个无限循环小数. 任何有理数都可以表示为无限循环小数的形式. 本题目要求即是:给出一个数字的循环小数表示法. 例如: 输入: 1,5 则输出: 0.2 输入: ...

  5. java实现杨辉三角系数

    ** 杨辉三角系数** (a+b)的n次幂的展开式中各项的系数很有规律,对于n=2,3,4时分别是:1 2 1, 1 3 3 1,1 4 6 4 1.这些系数构成了著名的杨辉三角形: 1 1 1 1 ...

  6. 在MyEclipse中设置jdk

    在MyEclipse中设置jdk的三处地方:1 选中项目右键菜单properties -->java Compiler 2 windows菜单中Preferences-->myeclips ...

  7. KVM在线扩展虚拟机内存

    环境介绍 在KVM下有一台虚拟机内存不够需要扩展内存.宿主机地址是192.168.1.28.我需要扩展的虚拟机是centos1708vm03. 1.登陆上宿主机查看虚拟机配置 virsh dumpxm ...

  8. input常用限制

    1.自动过滤空格 onkeyup="this.value=this.value.replace(/^ +| +$/g,'')" onafterpaste="this.va ...

  9. LVS 负载均衡器理论基础及抓包分析

    LVS 是 Linux Virtual Server 的简写,即 Linux 虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一.(百 ...

  10. 百度编辑器UEditor不能插入视频的解决方法

    在编辑器中就可以引用优酷.腾讯视频的iframe通用代码和embed html代码:移动端一般引用iframe,可设置属性,使其适应设备.(这里,建议切换到源码模式,插入相应的视频代码embed或if ...