`

内部类小结

阅读更多
内部类的分类:静态内部类,成员内部类,局部内部类,匿名内部类。
注意:
1,一个内部类的对象能够访问创建它的外部类对象的所有属性及方法(包括私有部分)。
//可以闭上眼镜,把这个内部类等同于一个类的一个方法,当然就可以访问这个外部类的
//所有方法和属性,私有方法和属性是属于外部类的,当然也就等同于内部类的.
2,对于同一个包中的其它类来说,内部类能够隐藏起来。(将内部类用private修饰即可)
//只有在内部类中,才能定义一个为private类型的class,因为这时编译器已经把这个类看作这个类的成员了,但是在一般使用时,就是所谓的”顶级类时”,不能使用private,只能是public 或者是friendly.如果要是想保证一个类不产生任何的对象,请在构造函数中,把构造函数声明成private.
3,内部类可定义在方法中,称为局部内部类,局部内部类所有的操作必须在方法的内部,。但它只能使用方法中的final常量。局部内部类一般是实现接口或者是继承父类。
//定义在一个方法内的类,又被成为局部内部类,这个类只能使用在方法中的final常量,注意,这个常量是在一个方法中的,那么能否使用一个类中的常量呢?当然是可以的,因为类中的常量在在一个方法中是可见的.(定义在方法体中的内部类,只能访问方法中定义的被声明为final的局部变量.原因:定义在方法体中的变量会随着方法的退出而消亡,通过定义其为final变量,可以扩展其生命期,可与访问其类实例的生命期配合,因为类实例的生命期不同于方法和其所属变量,是由系统自动控制回收时机,但对类属性的访问并没有严格的限制。)
4,内部类可以被定义为抽象类
// abstract 类同样可以在内部类中
5,非静态内部类不能声明本类的static成员, 成员内部类实例化的时候必须先实例化他的外围类才能实例化成员内部类。
//只有一个静态的内部类,才可以声明一个static成员,,静态内部类可以访问外围类的静态方法、成员(包括private static的成员).静态内部类实例化的时候不必先实例化外围类,可以直接实例化内部类。
class A{
    static class B{
       //如果这里不是一个static类,是不可以被声明这个gg方法的.
       static void gg(){ int a = 100;
       System.out.println(a);}}}
6,匿名内部类
在某些情况下,我们只需要内部类的一个对象,那么我们就没有必要给内部类命名,没有名字,没有构造函数的内部类我们称为匿名内部类
若试图定义一个匿名内部类,并想使用在匿名内部类外部定义的一个对象(指的是外围类以外的参数,不包括外围类),则编译器要求外部对象为final属性。
内部类特点(转)
1.静态类有各种控制访部级别:private,public,protected,packed
2.类的类成员默认访问控制符是package,而方法变量的默认访问控制符是private,并且不能加访问控制符。
外部类只能有两种访问修饰符:public 或默认为package
3.内部类可以为任何一种修饰符,其实内部类作为其外部类的一个成员,其访问修饰符决定了它是否可以在外部类对象中的可见度,其默认为package
4.建立内部类对象:
   outerObject=new outerClass(Constructor Parameters);
   outerClass.innerClass innerObject=outerObject.new InnerClass(Constructor Parameters);
5.内部类不可脱离其外部类的限制使用,必须outerClass.innerClass innerObject如此使用。
6.Java编译器在创建内部类对象时,隐式的把其外部类对象的引用也传了进去并一直保存着。这样就使得内部类对象始终可以访问其外部类对象,同时这也是为什么在外部类作用范围之外向要创建内部类对象必须先创建其外部类对象的原因。
内部类对象可以访问外部类的任意变量或方法(包括private变量或方法)
7.内部类的同名成员变量被屏蔽了,怎么办?没事,Java里用如下格式表达外部类的引用:
outerClass.this
8.和非静态内部类相比,区别就在于静态内部类没有了指向外部的引用
除此之外,在任何非静态内部类中,都不能有静态数据,静态方法或者又一个静态内部类(内部类的嵌套可以不止一层)。不过静态内部类中却可以拥有这一切。这也算是两者的第二个区别吧。
9.局部内部类:定义在一个方法甚至一个代码块之内。
**它有它自己的作用域,超出了这个范围就无效,除此之外它和其他内部类并没有区别。
当内部类被定义在块中时,对于块中,只能访问包含它的块的final类型变量;对外部类属性却没有限制。
10.匿名内部类 :new dog(){}
11.内部类最大的好外在于:****内部类对外部类的所有内容都是可访问的***,因此它可以参与外部类的方法进行计算。
   并且内部类还可以implements和extends其它接口或类,所以可以把内部类看作是一个功能扩大化了的类方法。
12.定义在方法体中的内部类,只能访问方法中定义的被声明为final的局部变量.
     原因:定义在方法体中的变量会随着方法的退出而消亡,通过定义其为final变量,可以扩展其生命期,可与访问其类实例的生命期配合,因为类实例的生命期不同于方法和其所属变量,是由系统自动控制回收时机,但对类属性的访问并没有严格的限制。
13.用final定义的局部变量相当于一个常量,其生命周期超出了方法体。
14.因为类B是类A的内部类,类C又是类B的内部类,所以类c也是类
分享到:
评论

相关推荐

    Java中的匿名内部类小结

    java内部类分为: 成员内部类、静态嵌套类、方法内部类、匿名内部类。这篇文章主要介绍了Java中的匿名内部类的相关资料,需要的朋友可以参考下

    Java内部类_动力节点Java学院整理

    内部类是指在一个外部类的内部再定义一个类。下面通过本文给大家java内部类的使用小结,需要的朋友参考下吧

    21天学通Java-由浅入深

    245 12.3.3 在外部类外访问静态内部类 246 12.4 匿名内部类 247 12.4.1 创建匿名内部类 247 12.4.2 匿名内部类的初始化 249 12.5 综合练习 250 12.6 小结 250 12.7 习题 250 第13章 多线程(精彩视频:55分钟) 252 ...

    (超赞)JAVA精华之--深入JAVA API

    1.2 深入理解嵌套类和内部类 1.2.1 什么是嵌套类及内部类? 1.2.2 静态嵌套类 1.2.3 在外部类中定义内部类 1.2.4 在方法中定义内部类 1.2.5 匿名内部类 1.2.6 内部类使用的其它的问题 1.3 文件和流 1.3.1 什么是数据...

    javaSE代码实例

    1.5 小结 11 第2章 基本数据类型——构建Java 大厦的基础 12 2.1 源代码注释 12 2.1.1 单行注释 12 2.1.2 区域注释 12 2.1.3 文档注释 13 2.2 基本数据类型 14 2.2.1 整型 15 2.2.2 浮点型 17 ...

    JAVA SE学习精华集锦

    1.2 深入理解嵌套类和内部类 47 1.2.1 什么是嵌套类及内部类? 47 1.2.2 静态嵌套类 48 1.2.3 在外部类中定义内部类 48 1.2.4 在方法中定义内部类 49 1.2.5 匿名内部类 49 1.2.6 内部类使用的其它的问题 50 1.3 文件...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    6.3 小结:Java其实是个类和对象的世界 152 6.4 习题 153 第7章 Java中的方法——给汽车丰富多彩的功能 154 教学视频:2小时55分钟 7.1 方法:让汽车动开动 154 7.1.1 引出问题:开动汽车 154 7.1.2 那么,...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    6.3 小结:Java其实是个类和对象的世界 152 6.4 习题 153 第7章 Java中的方法——给汽车丰富多彩的功能 154 教学视频:2小时55分钟 7.1 方法:让汽车动开动 154 7.1.1 引出问题:开动汽车 154 7.1.2 那么,...

    零点起航Delphi7基础教程源码

    自己购买的教材 零点起航Delphi7基础教程源码 Delphi7是Inprise公司推出的面向对象的可视化编程语言,它提供...第13章 网络编程技术 13.1 网络基础知识 13.2 TCP/IP编程 13.3 使用网络函数编程 13.4 小结 参考文献

    Java语言的科学与艺术 斯坦福大学经典教材

    10.11 编程练习 第11章 数组与ArrayList类 11.1 数组简介 11.2 数组的内部表示法 11.3 数组作为参数传递 11.4 使用数组制作表格 11.5 数组初始化 11.6 多维数组 11.7 图像处理 11.8 ArrayList类 11.9 小结 ...

    Java语言的科学与艺术(国外计算机科学经典教材)

     1.8 小结  1.9 复习题 第2章 编程示例  2.1 “Hello world”程序  2.2 编程过程的观点  2.3 两数相加的程序  2.4 编程习语和模式  2.5 类和对象  2.6 图形程序  2.7 小结  2.8 复习题  2.9 编程练习 第3...

    Java典型模块

    30.3 象棋游戏项目——规则的内部类 30.3.1 实现卒移动和吃的方法 30.3.2 实现炮、车移动和吃的方法 30.3.3 实现马移动和吃的方法 30.3.4 实现象移动和吃的方法 30.3.5 实现士移动和吃的方法 30.3.6 实现将移动和吃...

    疯狂JAVA讲义

    学生提问:既然内部类是外部类的成员,是否可以为外部类定义子类,在子类中再定义一个内部类来重写其父类中的内部类? 211 6.7.4 局部内部类 211 6.7.5 匿名内部类 212 6.7.6 闭包(Closure)和回调 215 6.8 ...

    Java完美编程(第3版).pdf

    本书是为全英文版本。 ...第13章 借口和内部类 第14章 泛型和arraylist类 第15章 链式数据结构 第16章 稽核,映射和迭代器 第17章 初探swing  第18章 深入swing 第19章 java的发展永无止境

    突破程序员基本功的16课.part2

    1.3 小结 第2课 对象与内存控制 2.1 实例变量和类变量 2.1.1 实例变量和类变量的属性 2.1.2 实例变量的初始化时机 2.1.3 类变量的初始化时机 2.2 父类构造器 2.2.1 隐式调用和显式调用 2.2.2 访问子类对象...

    小程序绑定用户方案优化小结

    在做过一系列小程序之后,对小程序的登陆鉴权的流程也有一定的理解,类似于 B 端小程序自不必说,要...之前在上海经常使用,价格和优惠都非常不错,这类小程序属于线下功能类小程序,内部有抽奖,付款等一系列功能。

    Visual C++ 2005入门经典.part08.rar (整理并添加所有书签)

    1.7 小结 第2章 数据、变量和计算 2.1 C++程序结构 2.1.1 程序注释 2.1.2 #include指令——头文件 2.1.3 命名空间和using声明 2.1.4 main()函数 2.1.5 程序语句 2.1.6 空白 2.1.7 语句块 2.1.8 自动生成的控制台程序...

Global site tag (gtag.js) - Google Analytics