刚刚学习完java编程思想的内部类,以xmind软件做了一下整理,顺便生成了总结文档.但是做来给自己看的.非常的业余.所以如果有理解错误的地方,请大家指出,在下会随时更新和完善~:)~
ps:附件为xmind的整理文件~可以用xmind软件打开,另外xmind图上的注释代码也在文档中~
内部类
1. 内部类特性
1.1 能够调用外部类的所有成员
1.1.1 使用.this
public class DotThis{
void f(){
System.out.println("DotThis.f()");
}
public class Inner{
public DotThis outer(){
return DotThis.this; //此处返回外部类的对象
}
public Inner inner() {
return new Inner(); //此处返回内部类本身
}
public static void main(String[] args){
DotThis dt =new DotThis();
DotThis.Inner dti = dt.inner();
dti.out().f();
}
}
}
1.2 能够继承类和实现接口,能够向上转型
1.3 能够覆盖
1.4 生成内部类对象
1.4.1 使用.new
public class DotNew{
public class Inner{};
public static void main(String[] args){
DotNew dn = new DotNew();
DotNew.Inner dni = dn.new Inner();
}
}
//通过调用外部类对象.new来返回一个内部类对象,在拥有外部类对象之前是不可能创建内部类对象的,因为内部类对象会暗暗链接到外部类对象上,但如果是静态内部类,则不需要对外部类对象的引用
2. 内部类分类
2.1 匿名内部类
2.1.1 可以不定义名字而返回所实现的接口
public Interface Contents{
public int value();
}
//这个匿名内部类是放在contents方法里的内部类,return new Contents()是返回一个实现了Contents接口的内部类,这里并没有给类定义名字.这一般是内部类不需要名字的情况下,比如事件响应后应该执行的代码.
public Class Parcel7{
public Contents contents(){
return new Contents(){
private int i =11;
public int value(){ return 1;}
}
}
public static void main(String[] args){
Parcel7 p =new Parcel7();
Contents c = p.contents();
}
}
2.2 嵌套内部类
2.2.1 嵌套在内部类的内部类,感觉这特性比较少用
2.3 作用域里内部类
2.3.1 包含在作用域或方法里的内部类,能够通过调用方法或判断域来定义内部类,在作用域以外是不可用的
public class Parcel6{
private void internalTracking(boolean b){
if(b){
class TrackingSlip{
.........
}
}
}
public void track(){internalTracking(true);}
public static void main(String[] args){
Parcel6 p = new Parcel6();
p.track(); //如果不调用这个方法,TrackingSlip类是不存在的,但是一样会编译出class。
}
}
2.4 接口内部类
2.4.1 能够在接口定义内部类,甚至在内部类实现外围接口
public interface ClassInInterface{
void howdy();
//内部类test实现了外围接口ClassInInterface
Class Test implements ClassInInterface{
public void howdy(){
System.out.println("howdy in classininterface!");
}
public static void main(String[] args){
new Test().howdy();
}
}
}
2.5 静态内部类
2.5.1 静态内部类不能调用外部类的非静态成员
这一点其实很好理解,因为static静态属性的代码是预先在内存中分配空间的,静态内部类的话也是预先在内存中分配空间,而非静态的方法属性是动态生成的,所以不能调用非静态的方法成员
3. 内部类的意义
3.1 多重继承
3.2 内部类代替主类用main方法测试
3.2.1 嵌套内部类测试
public class TestBed{
public void f(){System.out.println("f()");}
public static class Tester{
public static void main(String[] args){
TestBed t =new TestBed();
t.f();
}
}
}
//通过编译会生成一个独立的类TestBed$Tester.class,可以使用这个类测试,而不需要包含它,只需要在产品打包前简单删除TestBed$Tester.class
4. 内部类的实际应用
主要用于java的GUI编程中,常见有按键事务管理.
可以用于程序控制框架,参加java编程思想《内部类与控制框架》的例子.
4.1 事件适配器(匿名内部类)
- 大小: 65.5 KB
分享到:
相关推荐
NULL 博文链接:https://howarezhao.iteye.com/blog/1307538
Java内部类知识整理.pdf
这里是自己对java内部类整理的一篇文章,有可执行的源代码
Java内部类知识整理[归类].pdf
相信很多人都使用过内部类,新建线程使用的匿名内部类,但是有很多人对内部类的一些概念处于模糊阶段,比如为什么方法内部类引用方法参数,方法参数必须设置为final,所以本文系统得整理了一下内部类知识,如果有用...
java语言基础:内部类2[整理].pdf
关于JAVA内部类总结讲解,个人网上整理收藏,觉得不错滴
匿名内部类的使用(重要!!!!!!!) 13 成员内部类的使用 13 静态内部类的使用 14 枚举的二种实现方式 14 自定义类实现枚举 14 使用 enum 关键字实现枚举注意事项 15 enum 用方法说明 15 enum 实现接口 15 注解的理解 16...
本Java精华内容深入Java API、嵌套类和内部类、与时间有关的类Date,DateFormat,Calendar、文件与流、Java变量类型间的相互转换、Java与Web、用连接池提高Servlet访问数据库的效率、Java扩展、应用服务器的集群策略及...
上次有朋友问我,java中的类可以是static吗?我给他肯定的回答是可以的,在java中我们可以有静态实例变量、...当然类也可以是静态的,下面小编整理了些关于java中的static class相关资料分享在脚本之家平台供大家参考
来自 http://blog.csdn.net/wuliming_sc/ 上的文章,整理的很全面
内部类是指在一个外部类的内部再定义一个类。下面通过本文给大家java内部类的使用小结,需要的朋友参考下吧
面向对象基本语法,抽象类,接口,内部类等;常用类api使用;常用算法,常用加密算法;Rxjava的使用;Http客户端接口测试,Okhttp的使用,HttpClient的使用,HttpUrlConnection的使用;集合的常见用法; 线程的基本知识;反射的...
内部类是指在一个外部类的内部再定义一个类。类名不需要和文件夹相同。本文给大家分享java读书笔记十五之java中的内部类,对java读书笔记相关知识感兴趣的朋友一起学习吧
会计继续教育行政事业单位内部控制规范解读(整理保过).docx
430单片机内部寄存器整理分类表,非常有用!
哈工大理论力学对应的真题分类分章节汇总,真题集,适合机械考研 考试点内部资料,可去考试点官网查找对应视频讲解
7.6.9 为什么要用内部类:控制框架 7.7 构建器和多形性 7.7.1 构建器的调用顺序 7.7.2 继承和finalize() 7.7.3 构建器内部的多形性方法的行为 7.8 通过继承进行设计 7.8.1 纯继承与扩展 7.8.2 下溯造型与运行期类型...
自己整理的j2se思维导图 基本知识 标识符 常量 变量 运算符 结构语句 方法 数组 异常 类与对象 内部类 关键字 封装 继承 多态 抽象类 接口 常用类 集合 IO
4. **沟通和共享:** 资料整理表促进了团队内部和团队与外部利益相关者之间的信息共享和沟通。这有助于协作、协调和合作,以推动产品的开发和维护。 5. **版本控制:** 通过记录不同文档和资料的版本,资料整理表有...