随笔分类 - Java Innerclasses(内部类)
摘要:http://www.cnblogs.com/lanxuezaipiao/p/3369962.html 1. transient的作用及使用方法 我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化
阅读全文
摘要:可以在代码块里创建内部类,典型的方法是在一个方法体的里面创建,局部内部类不能有访问说明符,因为它不是外围类的一部分,但是可以访问当前代码块的常量,以及此外围类的所有成员,下面分别对局部内部类和匿名内部类进行了比较 局部内部类和匿名内部类都实现了这个功能, 它么具有相同的行为和能力,既然局部内部类的名
阅读全文
摘要:如果创建了一个内部类,然后继承其外围类并重新定义内部类时,"覆盖"内部类就好像是其外围类的一个方法,并不起作用, 这两个内部类是完全独立的两个实体,各自在自己的命名空间内 当然,明确的继承某个内部类也是可以的
阅读全文
摘要:因为内部类的构造器必须连接到指向其外部类对象的引用. 因为在继承内部类的时候那个指向外部类对象的"秘密的"引用必须被初始化,而在导出类中不再存在可连接的默认对象,要解决这个问题必须用特殊的语法来明确说清它么之间的关联:
阅读全文
摘要:应用程序控制框架(application framework)就是设计解决某类特殊问题的一个类,或一组类,要运用某个应用程序框架,通常是继承一个类或多个类,并覆盖这些方法.在覆盖的方法中编写代码定制应用程序框架提供的解决方案,以解决你的问题 控制框架是一类特殊应用程序框架,它用来解决响应事件的需求,
阅读全文
摘要:闭包(closure)是一个可调用的对象,它记录了一些信息,这些信息来自于创建它的作用域. 内部类是面向对象的闭包,因为它不仅包含外围类对象(创建内部类的作用域)的信息,还自动拥有一个指向此外围类对象的引用,在此作用域内,内部类有权操作所有的成员,包括private成员 回调的价值在于它的灵活性--
阅读全文
摘要:每个内部类都能独立地继承自一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响 内部类有效的实现了多重继承,也就是说,内部类允许继承多个非接口类型(类或抽象类) 如果拥有抽象类或具体的类,而不是接口,那就只能使用内部类才能够实现多重继承 如果不需要解决多重继承的问
阅读全文
摘要:一个内部类被嵌套多少层并不重要--它能透明地访问所有它能嵌入的外围类的所有成员
阅读全文
摘要:正常情况下,不能在接口放置任何代码,但嵌套类可以作为接口的一部分,你放到接口中的任何类都自动地是public和static.因为类是static的,只是将嵌套置于接口的命名空间内,这并不违反接口的规则,你甚至可以在内部类中实现其外围接口 如果你需要创建某些公共代码,使得它么可以被某个接口的所有不同实
阅读全文
摘要:如果不需要内部类对象与其外围类对象之间有联系,那么可以将内部类声明为static,这通常称为嵌套类,想要理解static应用于内部类时的含义,就必须记住,普通的内部类对象隐式地保存了一个引用,指向它的外围类对象,然而,当内部类时static时,就不是这样了,嵌套类意味着: 1)要创建嵌套类的对象,并
阅读全文
摘要:用内部类实现工厂模式 :优先使用类而不是接口,如果你的设计中需要某个接口,你必须了解它,否则不到迫不得已,不要将其放到你的类中
阅读全文
摘要:匿名内部类: 匿名内部类与正规的继承相比有些受限,因为匿名内部类既可以扩展类,也可以实现接口,但不能两者兼备,而且如果实现接口,也只能实现一个接口 一.contents()方法将返回值的生成与表示这个返回值的类的定义结合在一起!另外,这个类是匿名的,它没有名字,更糟糕的是,看起来似乎是你要创建一个C
阅读全文
摘要:通常,如果所读写 的代码包含了内部类,那么它们都是"平凡的"内部类,简单并且容易理解,然而,内部类的语法覆盖了大量其它的更加难以理解的计数,例如可以在一个方法里或者在任意的作用域里定义内部类.这么做有两个理由 1)如前所述,你实现了某类型的接口,于是可以创建并返回对其的引用 2)你要创建一个复杂的问
阅读全文
摘要:当将内部类向上转型为其基类时,尤其是转型为一个接口的时候,内部类就有了用武之地,(从实现某个接口的对象,得到对接口的引用,与向上转型为这个对象的基类,实际上是一样的效果,),这是因为此内部类 某个接口的实现 能够完全不可见,并且不可用,所得到的只是指向基类或接口的引用,所以能够很方便地隐藏实现细节
阅读全文
摘要:如果需要生成对外部类对象的引用,可以使用外部类的名字后面紧跟圆点和this,这样产生的引用自动地具有正确的类型,这一点在编译器就被知晓并受到检查,因此并没有运行时开销 要去创建某个内部类的对象,必须字new表达式中提供其他外部类对象的引用,这就需要.new语法,必须使用外部类的对象来创建内部类
阅读全文
摘要:可以将一个类定义在另一个类的内部,这就是内部类 创建内部类的方式 把类的定义置于外部类的里面 典型的情况是,外部类将有一个方法,该方法返回一个指向内部类的引用,就像在to()和contents()方法中看到的一样, 如果想从外部类的非静态方法之外的任意位置创建某个内部类的对象,那么必须像main()
阅读全文