java内部类概念
一、成员内部类
作为外部类的成员存在的类,则称之为成员内部类
public class OuterClass{
public class InnerClass{
}
}
成员内部类样例
成员内部类具有如下特征:
1.可以访问外部类所有的成员,包括被声明为私有(private)的;
2.可以使用任何访问权限修饰符,包括protected和private;
3.不允许在外部类以外的其他类中创建内部类对象,如果一定需要被其它类访问,应把内部类的对象声明声明为外部类的属性,
然后在其他类中创建内部类对象,在通过该属性进行访问。
二、局部内部类
存在于外部类的方法中的类,称之为局部内部类,其定位与局部变量相似
public class OuterClass{
public void method(){
class InnerClass{
}
}
}
局部内部类样例
局部内部类有如下特征:
1.不允许使用任何访问权限修饰符;
2.创建局部内部类的对象的语法,必须在声明局部内部类之后;
3.可以访问外部类所有的成员,包括被声明为私有(private)的;
4.不能访问任何局部变量或方法的参数,除非这些局部变量或参数使用final修饰。
三、静态内部类
使用static修饰的成员内部类,称之为静态内部类
public class OuterClass{
public static Class InnerClass{
}
}
静态内部类样例
静态内部类有如下特征:
1.不可以访问外部类中非static成员;
2.可以使用任何访问权限修饰符,包括protected和private;
3.可以在其它类中直接创建静态内部类的对象,语法格式为:
外部类.内部类 对象名 = new 外部类.内部类();
其他类中创建静态内部类对象
四、匿名内部类
匿名内部类表现为:没有类的声明语法、直接创建已知类的子类对象或已知接口的实现类对象
public class OuterClass{
public int id = new Object(){
public int calculate(){
return hashCode() * 100;
}
}.calculate();
public void run(){
new Object(){
public void helloworld(){
System.out.println("helloworld ! ! !");
}
}.helloworld();
}
}
匿名内部类样例
内部类的应用
内部类一般应用于以下开发需求:
1.将相关类组织在一起,避免命名的混淆;
2.由于成员内部类可以使用所有访问权限修饰符,则可以实现更深层次的隐藏;
3.实现多继承;
4.更充分地利用外部类的成员,完成特有的业务逻辑,且该部分业务逻辑的实现不符合其它任意一个类的需求。
java内部类概念的更多相关文章
- java内部类的作用分析
提起Java内部类(Inner Class)可能很多人不太熟悉,实际上类似的概念在C++里也有,那就是嵌套类(Nested Class),关于这两者的区别与联系,在下文中会有对比.内部类从表面上看,就 ...
- Java内部类的使用小结
转载:http://android.blog.51cto.com/268543/384844/ Java内部类的使用小结 内部类是指在一个外部类的内部再定义一个类.类名不需要和文件夹相同. *内部类可 ...
- (转载)Java内部类的使用小结
原文摘自:http://android.blog.51cto.com/268543/384844/ 内部类是指在一个外部类的内部再定义一个类.类名不需要和文件夹相同. *内部类可以是静态stati ...
- js闭包vs Java内部类
前言: 昨天写了一个关于Java内部的博客,在内部类的最后一点中谈到了Java闭包的概念,他是这样定义闭包的:闭包是一个可调用的对象,它记录了一些信息,这些信息来自创建它的作用域.结合Java的内部类 ...
- java内部类深入详解 内部类的分类 特点 定义方式 使用
本文关键词: java内部类 内部类的分类 特点 定义方式 使用 外部类调用内部类 多层嵌套内部类 内部类访问外部类属性 接口中的内部类 内部类的继承 内部类的覆盖 局部内部类 成员内 ...
- Java内部类详解(一)
(转自:http://blog.csdn.net/wangpeng047/article/details/12344593) 很多人对于Java内部类(Inner Class)都十分陌生,甚至听都没听 ...
- Java 内部类、静态内部类、匿名内部类
java提高篇(八)----详解内部类 概念 可以将一个类的定义放在另一个类的定义内部,这就是内部类. 为什么要使用内部类?在<Think in java>中有这样一句话:使用内部类最吸引 ...
- 从字节码的角度看Java内部类与外部类的互相访问
Java中non-static内部类为何可以访问外部类的变量?Java中外部类又为何可以访问内部类的private变量?这两个问题困扰过我一段时间,查了一些网上的答案,大多从“闭包”概念入手,理解起来 ...
- JAVA 内部类 (一)
可将一个类定义置入另一个类定义中.这就叫作“内部类”.内部类对我们非常有用,因为利用它可对那些逻辑上相互联系的类进行分组,并可控制一个类在另一个类里的“可见性”.然而,我们必须认识到内部类与以前讲述的 ...
随机推荐
- C语言再学习part3—算法
君子远庖厨,万物皆备于我.—孟子 这篇文章主要总结程序的主要要素,以及程序的构成是什么样子的.最后说说我学到的一种奇特的表示算法的方式—伪代码. 让我们开始吧! 一个程序应该包括以下两个主要要素: 1 ...
- git需要设置再次弹出输入账号密码
今天在用命令行pull线上代码到本地时遇到一个尴尬的问题,因为新下载的git貌似默认了在pull,push代码时只弹出一次输入账号密码,反正我这里是这样的. 开始在pull线上代码的时候不小心密码输错 ...
- js 时间格式转换
js时间格式转换 格式化时间转成时间戳 //格式化转时间戳(单位秒) function strtotime(strtime) { strtime = strtime.substring(0, 19); ...
- web端常见测试
一.登录注册功能 1.页面调转 2.tab键与enter键 3.密码加密显示,是否支持复制粘贴 4.账号密码校验 5.刷新页面,更新验证码 二.界面测试 1.样式.颜色.整体布局风格 2.最大化.最小 ...
- P1522 牛的旅行
P1522 牛的旅行 Cow Tours 提交 11.44k 通过 4.97k 时间限制 1.00s 内存限制 125.00MB 题目提供者洛谷 难度提高+/省选- 历史分数100 提交记录 查看题解 ...
- stun/turn服务器部署
目录: 一.简介 二.安装 三.配置与运行 四.运行检测 五.答疑环节 一.简介 本文通过在服务器上安装coturn这个软件,实现搭建STUN服务器和TURN服务器. coturn 简介:是一个免费的 ...
- [51nod 1181] 质数中的质数 - 筛法
如果一个质数,在质数列表中的编号也是质数,那么就称之为质数中的质数.例如:3 5分别是排第2和第3的质数,所以他们是质数中的质数.现在给出一个数N,求>=N的最小的质数中的质数是多少(可以考虑用 ...
- Java知识点题集
一.红黑树的特性 (1)每个节点或者是黑色,或者是红色. (2)根节点是黑色. (3)每个叶子节点(NIL)是黑色. [注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!] (4)如果一个节 ...
- LeetCode Two Sum&Two Sum II - Input array is sorted&3Sum&4Sum 一锅煮题解
文章目录 Two Sum Two Sum II 3Sum 4Sum Two Sum 题意 给定一个数组,和指定一个目标和.从数组中选择两个数满足和为目标和.保证有且只有一个解.每个元素只可以用一次. ...
- [SNOI2017]炸弹[线段树优化建图]
[SNOI2017]炸弹 线段树优化建图,然后跑一边tarjan把点全部缩起来,炸一次肯定是有连锁反应的所以整个连通块都一样-于是就可以发现有些是只有单向边的不能忘记更新,没了. #include & ...