zoukankan      html  css  js  c++  java
  • 第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文件,内部类也不例外,文件名的格式为:外部类名$内部类名。如果内部类有嵌套则继续使用$连接。匿名内部类会简单的产生一个数字作为标识。
  • 相关阅读:
    燃尽的一个不便之处修改
    jquery给元素添加样式表的方法
    http协议
    春节读书
    file_get_contents(): php_network_getaddresses: getaddrinfo failed: Name or service not known
    jQuery on(),live(),trigger()
    jquery ui中的dialog,官网上经典的例子
    问题:循环元素,被选中元素个数,全选
    3.5星|《小学问》:年轻人思维与婚恋常见误区解析
    正念疗法入门介绍,作者是日籍美国正念疗法医生:3星|《高效休息法》
  • 原文地址:https://www.cnblogs.com/Xmingzi/p/8603761.html
Copyright © 2011-2022 走看看