Java 内部类、静态类内部类
问: 什么是内部类?
答: 内部类(Inner Class)就是在一个类的内部再定义一个类,与之对应包含内部类的类被称为外部类。
问: 为什么要将一个类定义在另外一个类内部呢?
答: 内部类主要作用如下:
- 内部类提供了更好的封装,可以被内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类。
- 内部类的方法可以直接访问外部类的所有数据,包括Private数据。
- 内部类所有实现的功能,使用外部类同样可以实现,只是有时候使用内部类更方便。
问: 内部类有几种?
答: 内部类可以分为以下几种:
- 成员内部类
- 静态内部类
- 方法内部类
- 匿名内部类
成员内部类
静态内部类
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 内部类、静态类内部类的更多相关文章
- JAVA基础知识|内部类
一.什么是内部类? 内部类(inner class)是定义在另一个类中的类 为什么使用内部类? 1)内部类方法可以访问该类定义所在的作用域中的数据,包括私有数据 2)内部类可以对同一个包中的其他类隐藏 ...
- Java中的内部类怎么用
一.为什么需要内部类?java内部类有什么好处?为什么需要内部类? 首先举一个简单的例子,如果你想实现一个接口,但是这个接口中的一个方法和你构想的这个类中的一个方法的名称,参数相同,你应该怎么办?这时 ...
- Java 四种内部类
静态内部类:类中静态类 成员内部类:类中非静态类 局部内部类:类中方法中有名字的类 匿名内部类:类中方法中无名的类 引言:在Java中通常情况下,一个类中会有属性和方法,但还可以包含内部类,内部类可以 ...
- 讨论Java中的内部类是什么?
目录 前言 what is that? 成员内部类 局部内部类 匿名内部类 why use it? how to use? 前言 内部类,讲完前面的特性,今天就讲下内部类这个用的比较多,出现频率挺高的 ...
- java 多态和内部类
接口跟接口之间存在继承关系 一个接口可以继承多个接口 一个非抽象类:必须实现接口中的所有方法 一个抽象类实现接口 可以不实现接口中的方法 但是继承与抽象类的类必须要是实现接口中的方法 多态:一个对 ...
- [java] 深入理解内部类: inner-classes
[java] 深入理解内部类: inner-classes // */ // ]]> [java] 深入理解内部类: inner-classes Table of Contents 1 简介 ...
- Java中的内部类(成员内部类、静态内部类、局部内部类、匿名内部类)
Java中的内部类(成员内部类.静态内部类.局部内部类.匿名内部类) 神话丿小王子的博客主页 我们先看这样一段话:人是由大脑.肢体.器官等身体结果组成.而组成我们人体的心脏它也有自己的属性和行为(血液 ...
- java基础之 内部类
Java中的内部类共分为四种: 静态内部类static inner class (also called nested class) 成员内部类member inner class 局部内部类loca ...
- java 笔记(2) —— 内部类的作用
一.内部类简介 个人觉得内部类没多少研究价值,GUI中的事件响应算是非常典型的应用了. Java内部类其实在J2EE编程中使用较少,不过在窗口应用编程中特别常见,主要用来事件的处理.其实,做非GUI编 ...
- Java基础(53):内部类(转)
java中的内部类总结 内部类不是很好理解,但说白了其实也就是一个类中还包含着另外一个类 如同一个人是由大脑.肢体.器官等身体结果组成,而内部类相当于其中的某个器官之一,例如心脏:它也有自己的属性和行 ...
随机推荐
- audio的总结
H5的audio谁都会用, 照着官方api放个标签, play, stop... 实际运用中需要一些兼容性封装: //audio $.audio = function(params) { var $a ...
- 【直播预告】7月18日3D游戏引擎免费公开课答疑,參与送C币!
喜讯喜讯! 为了酬谢广大学员.CSDN学院特推出iOS和3D游戏引擎开发免费技术答疑公开课,让您度过一个充实的暑假~ 參与本次公开课,即有机会获得50C币! 答疑公开课时间:7月18日 晚7:30-9 ...
- poj 2195(KM求最小权匹配)
题目链接:http://poj.org/problem?id=2195 思路:我们都知道KM使用来求最大权匹配的,但如果要求最小权匹配,只需把图中的权值改为负值,求一次KM,然后权值和取反即可. ht ...
- Windows下使用Visual Studio 2010 编译ffmpeg全过程
(注意:请务必先阅读:七,后记补充:) ffmpeg是一个开源的多媒体库,使用非常广泛. 在linux下编译ffmpeg非常简单,而在windows下编译就不是那么容易了.一般在windows下使用M ...
- ubuntu12.04 安装nginx+php+mysql (lnmp)的web服务器环境
1.Ubuntu12.04 安装nginx+php+mysql (lnmp)的web服务器环境 http://blog.db89.org/ubuntu12-04-install-nginx-php-m ...
- 哈工大LTP
http://ltp.ai/ http://pyltp.readthedocs.io/zh_CN/latest/ http://www.cnblogs.com/Denise-hzf/p/6612886 ...
- (六)通过solr7的API实现商品的列表查询
(六)通过solr7的API实现商品的列表查询 工具类: 获取 HttpSolrClient public class Constant { public static HttpSolrClient ...
- onload事件,解决不能在head写代码
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta http-equiv="con ...
- margin 依附与可见的内容,不能为margin而写margin
margin 依附于可见的内容,不能为margin而写margin <!DOCTYPE html><html><head><style> p{marg ...
- java爬虫-简单爬取网页图片
刚刚接触到“爬虫”这个词的时候是在大一,那时候什么都不明白,但知道了百度.谷歌他们的搜索引擎就是个爬虫. 现在大二.再次燃起对爬虫的热爱,查阅资料,知道常用java.python语言编程,这次我选择了 ...