• 第10章_内部类:


    1:内部类将一些逻辑相关的类组织到一起。
    2:是一种代码隐藏机制,可以访问外部类的成员,并与之通信。
    3:经典的用法外部类中含有一个返回内部类的引用。
    4:在内部类中获取外部类的引用外部类类名.this例如:(OutClass.this)。{可以在内部类中写一个方法用这种方法返回它的外部类的引用}
    5:在外部类之外的其他类创建内部类的对象OutClass.InnerClass obj = OutClass对象.new InnerClass();因此在外部类创建之前,内部类无法创建(静态内部类除外)。
    6: protected本类、子类、本包中可以访问。
    7:要在某一个作用域内部解决一个繁琐的问题,需要创建一个类但是不希望被别的作用域访问。
    8:匿名内部类返回一个接口的引用,该接口的继承实现类的类体在此处定义了出来。
    9:如果希望在匿名内部类中使用外部定义的对象,那么编译器会要求改参数是final的。
    10:由于匿名内部类没有类名,所以不会有构造器。通过实例初始化可以达到类似的效果。如下例:
    abstract class Base{
    public Base(int i){
    println("abstractClass"+"i");
    }
    }
    public class OuterClass{
    public static Base getBase(int i){
    return new Base(i){ //这里这个i没有被匿名内部类直接使用所以不需要被final修饰。
    println("innerClass"+""i");
    }
    }
    }
    11:匿名内部类可以扩展类也可以实现接口但是两者不能兼备,而如果实现接口也只能是一个
    12:如果希望内部类不需要和他的外部类有联系。可以使用static修饰内部类使其成为嵌套类
    13:普通内部类实际上保存了一个它的外部类的引用,但是嵌套类没有。(嵌套类的创建不需要外部类,嵌套类不能访问外部类的非静态成员)
    14:接口内部的类(因为接口中的成员都是public static的,所以接口中的内部类都是嵌套类,因为接口和嵌套类都是static的所以嵌套类只是放到了接口的命名空间,这并不违反接口的规则。)
    15:如果希望接口中某一段代码需要被所有实现类共用,可以使用接口内部类实现。
    16:接口解决了部分多继承的问题,而内部类有效的完善了java不能多继承的缺陷。(内部类的出现可以使外部类间接的继承多个非接口的类)。
    17:闭包是一个可调用的对象,它记录了一些信息,这些信息来自于创建它的作用域。(内部类就是java的闭包)
    18:内部类的继承,由于内部类隐士的包含了一个外部类的引用,创建内部类时也需要提前创建外部类的实例。
    继承内部类的时候需要使用特殊的语法指明其中的联系。例如:
    Class OutClass{
    Class InnerClass{}
    }
    pbulic class Inner extends OutClass.InnerClass{
    Inner(OutClass outClass){
    outClass.super(); //使用构造方法接收一个外部类的引用然后执行:enclosingClassReference.super();
    }
    }
    //参考:http://blog.csdn.net/FeeLang/article/details/39403027
    19:局部内部类:在代码块里创建内部类,典型的是在方法内创建内部类,该类可以访问当前代码块中的常量和外部类的所有成员。
    20:局部内部类和匿名内部类:既然局部内部类不能被外不访问,为什么不用匿名内部类呢?因为匿名内部类只能有一个实例,局部内部类可以有多个。
    21:内部类标识符:每一个类都会产生一个.class文件,内部类也不例外,文件名的格式为:外部类名$内部类名。如果内部类有嵌套则继续使用$连接。匿名内部类会简单的产生一个数字作为标识。
  • 相关阅读:
    TypeConverter的使用
    ASP.NET MVC——Controller的激活
    ASP.NET 会话状态的模式
    ASP.NET页面生命周期描述
    一个字符串搜索的Aho-Corasick算法
    ILMerge 简单使用
    js css优化-- 合并和压缩
    C#.Net网页加载等待效果漂亮并且简单
    获取打开文件的路径和文件名
    C#程序中:如何启用进程、结束进程、查找进程
  • 原文地址:https://www.cnblogs.com/Xmingzi/p/8603761.html
Copyright © 2020-2023  润新知