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中的内部类总结 内部类不是很好理解,但说白了其实也就是一个类中还包含着另外一个类 如同一个人是由大脑.肢体.器官等身体结果组成,而内部类相当于其中的某个器官之一,例如心脏:它也有自己的属性和行 ...
随机推荐
- 2017 css新特性
2017年要学习的三个CSS新特性 这是翻译的一篇文章,原文是:3 New CSS Features to Learn in 2017,翻译的不是很好,如有疑问欢迎指出. 新的一年,我们有一系列新的东 ...
- iOS - url中文和特殊字符转码###
- (NSString *)generateUrl:(NSString *)url{ /** 第一个参数:NULL 第二个参数:C语言的字符串 第三个参数:NULL 第四个参数:要转义的字符串,不要乱 ...
- python在linux中输出带颜色的文字的方法
在开发项目过程中,为了方便调试代码,经常会向stdout中输出一些日志,默认的这些日志就直接显示在了终端中.而一般的应用服务器,第三方库,甚至服务器的一些通告也会在终端中显示,这样就搅乱了我们想要的信 ...
- MySQL右连接
1.语法:select 字段列表 from table1 别名1 right join table2 别名2 on 连接条件 [where 子句]
- 头一次玩博客,记录下我的java之路吧
今天写了简单的后台管理系统,发现光靠脑子记住知识真的很难,笔记本不好翻,之前写的代码更难找,所以写写博客,记录一些知识,为了以后上班用得到.
- 如何停止和扭转UIView的动画
本文转载至 http://codego.net/576089/ 我有它收缩时碰到切换按钮UIView的动画跳和它扩展恢复到原来的大小当再次接触到按钮.密封式前大灯一切都工作得很好.问题是,动画师注意 ...
- 1674 区间的价值 V2(分治)
1674 区间的价值 V2 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 lyk拥有一个区间. 它规定一个区间的价值为这个区间中所有数and起来的值与这个区间所有 ...
- 企业实施DevOPS的七大挑战(转)
从别人的演讲视频中摘抄,做笔记. 什么是DevOPS 如何衡量DevOPS 企业实施DevOPS的七大挑战 自动化测试投入不足 单元测试 API测试 界面测试 功能测试 高度集中的IT服务 标准化 脚 ...
- 控制bin文件夹里面的dll不复制到临时目录中( <hostingEnvironment shadowCopyBinAssemblies="false" />)
One of the things that makes developing ASP.NET applications very cool is that you can rapidly proto ...
- Servlet学习笔记【2】---Http数据包
本文主要讲Http协议相关知识. 1 Http协议特点 单向性:客户端和服务端是单向通信的,只有客户端发请求,服务端才会响应产生.(异于推送模式) 无状态:协议本身并没有状态的记录,当客户端多次访问服 ...