问: 什么是内部类?

答: 内部类(Inner Class)就是在一个类的内部再定义一个类,与之对应包含内部类的类被称为外部类。

问: 为什么要将一个类定义在另外一个类内部呢?

答: 内部类主要作用如下:

  1. 内部类提供了更好的封装,可以被内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类。
  2. 内部类的方法可以直接访问外部类的所有数据,包括Private数据。
  3. 内部类所有实现的功能,使用外部类同样可以实现,只是有时候使用内部类更方便。

问: 内部类有几种?

答: 内部类可以分为以下几种:

  • 成员内部类
  • 静态内部类
  • 方法内部类
  • 匿名内部类

成员内部类

静态内部类

  1、静态内部类不能直接访问外部类的 非静态成员,但可以通过 new 外部类().成员 的方式访问。

  2、如果外部类的 静态成员 与内部类的 成员 名称相同,可以通过“外部类.静态成员”的方式访问。

  3、创建静态内部类的对象时,不需要外部类的对象,可以直接创建:内部类 对象名 = new 内部类()

方法内部类

  由于方法内部类不能在外部类的方法以外的地方使用,因此方法内部类不能使用 访问控制 符和 static 修饰符

示例代码:

public class Outer {
private int a = 11;
static int b = 22;
int c = 33; // 成员内部类
public class Inner {
public void test() {
System.out.println("访问外部类中的a:" + Outer.this.a);
System.out.println("访问外部类中的b:" + Outer.b);
System.out.println("访问外部类中的c:" + c);
}
} // 静态内部类
public static class SInner {
public void test() {
System.out.println("访问外部类中的a:" + new Outer().a);
System.out.println("访问外部类中的a:" + b);
System.out.println("访问外部类中的a:" + new Outer().c); }
} // 成员内部类
public void Show() {
int score = 88;
class SInner {
public int getScore() {
return score + 10;
}
} // 创建方法内部类的对象
SInner si = new SInner();
System.out.println("调用方法内部类的score:" + si.getScore());
} public static void main(String[] args) {
// 创建成员内部类的对象时,需要通过外部类的对象 out.new来创建 内部类对象
Outer out = new Outer();
Inner in = out.new Inner();
in.test(); // 创建静态内部类的对象时,可以直接创建内部类对象
SInner si = new SInner();
si.test(); // 调用方法
out.Show();
}
}

Java 内部类、静态类内部类的更多相关文章

  1. JAVA基础知识|内部类

    一.什么是内部类? 内部类(inner class)是定义在另一个类中的类 为什么使用内部类? 1)内部类方法可以访问该类定义所在的作用域中的数据,包括私有数据 2)内部类可以对同一个包中的其他类隐藏 ...

  2. Java中的内部类怎么用

    一.为什么需要内部类?java内部类有什么好处?为什么需要内部类? 首先举一个简单的例子,如果你想实现一个接口,但是这个接口中的一个方法和你构想的这个类中的一个方法的名称,参数相同,你应该怎么办?这时 ...

  3. Java 四种内部类

    静态内部类:类中静态类 成员内部类:类中非静态类 局部内部类:类中方法中有名字的类 匿名内部类:类中方法中无名的类 引言:在Java中通常情况下,一个类中会有属性和方法,但还可以包含内部类,内部类可以 ...

  4. 讨论Java中的内部类是什么?

    目录 前言 what is that? 成员内部类 局部内部类 匿名内部类 why use it? how to use? 前言 内部类,讲完前面的特性,今天就讲下内部类这个用的比较多,出现频率挺高的 ...

  5. java 多态和内部类

    接口跟接口之间存在继承关系 一个接口可以继承多个接口 一个非抽象类:必须实现接口中的所有方法 一个抽象类实现接口  可以不实现接口中的方法  但是继承与抽象类的类必须要是实现接口中的方法 多态:一个对 ...

  6. [java] 深入理解内部类: inner-classes

    [java] 深入理解内部类: inner-classes // */ // ]]>   [java] 深入理解内部类: inner-classes Table of Contents 1 简介 ...

  7. Java中的内部类(成员内部类、静态内部类、局部内部类、匿名内部类)

    Java中的内部类(成员内部类.静态内部类.局部内部类.匿名内部类) 神话丿小王子的博客主页 我们先看这样一段话:人是由大脑.肢体.器官等身体结果组成.而组成我们人体的心脏它也有自己的属性和行为(血液 ...

  8. java基础之 内部类

    Java中的内部类共分为四种: 静态内部类static inner class (also called nested class) 成员内部类member inner class 局部内部类loca ...

  9. java 笔记(2) —— 内部类的作用

    一.内部类简介 个人觉得内部类没多少研究价值,GUI中的事件响应算是非常典型的应用了. Java内部类其实在J2EE编程中使用较少,不过在窗口应用编程中特别常见,主要用来事件的处理.其实,做非GUI编 ...

  10. Java基础(53):内部类(转)

    java中的内部类总结 内部类不是很好理解,但说白了其实也就是一个类中还包含着另外一个类 如同一个人是由大脑.肢体.器官等身体结果组成,而内部类相当于其中的某个器官之一,例如心脏:它也有自己的属性和行 ...

随机推荐

  1. Vue实现远程获取路由与页面刷新导致404错误的解决

    一.背景 先简单介绍一下现在项目情况:前后端分离,后端服务是Java写的,前端是Vue+ElementUI. 最近的一个需求是:通过后端Api去获取前端路由表,原因是每个登录角色对应的前端路由表可能是 ...

  2. NoSQL-MongoDB with python

    前言: MongoDB,文档存储型数据库(document store).NoSQL数据库中,它独占鳌头,碾压其他的NoSQL数据库. 使用C++开发的,性能仅次C.与redis一样,开源.高扩展.高 ...

  3. 【BZOJ1053】[HAOI2007]反素数ant 暴力

    [BZOJ1053][HAOI2007]反素数ant Description 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4.如果某个正整数x满足:g(x)>g(i) ...

  4. 从网上搜索到的一些关于pcap源代码,入门级的

    /*pcap_1.c*/ #include <stdio.h>#include <stdlib.h>#include <pcap.h>  /* 如果没有pcap的系 ...

  5. 封装AJax实现JSON前台与后台交互

    实践技术点:1.AJax自定义封装 2.后台序列化与反序列化JSON 3.客户端解析JSON字符串,处理DOM 实现代码如下: 1.JS脚本代码:   1 /*** NOTE:AJAX处理JS TIM ...

  6. SQLServer与ASP中DATEDIFF函数区别

    一.SQLServer: 格式: DATEDIFF(interval,startdate,enddate) interval参数: 年-yy,yyyy 季度-qq,q 月-mm,m 年中的日-dy,y ...

  7. 内置函数:sorted 用法

    内置函数——sorted  对list.dict进行排序,Python提供了两个方法 对给定的List L进行排序,方法1: 用List的成员函数sort进行排序,在本地进行排序,不返回副本方法2: ...

  8. Python获取位数

    import platform platform.architecture()

  9. Python判断网络是否可以访问

    import urllib url = "http://www.baidu.com" try: status = urllib.urlopen(url).code print st ...

  10. 转:使用awk命令获取文本的某一行,某一列

    1.打印文件的第一列(域)                 : awk '{print $1}' filename2.打印文件的前两列(域)                 : awk '{print ...