澳门二十一点游戏赌场 澳门二十一点游戏赌场
    您现在的位置:首页 >> 软件应用 >> Java教程 >> 内容

    java内部类的总结

    时间:2012/7/23 20:32:13 点击:

      核心提示:内部类总结:1内部类的嵌套可以理解成类的链关系,在构造一个内部类(非static)的实例的时候,会将直接外层类的实例作为参数传进构造函数,而外层类的实例也是用其外层类的实例构造,所以是一种链状关系,内...
    内部类总结:

    1内部类的嵌套可以理解成类的链关系,在构造一个内部类(非static)的实例的时候,会将直接外层类的实例
    作为参数传进构造函数,而外层类的实例也是用其外层类的实例构造,所以是一种链状关系,内部的类可以使用所有
    外层的类的实例,而外层的类不能使用内层的类, 应用a.this(最外层类实例) ,a.b.c.this(链中某个外层的实例)。

    class TheOuter{
    class kk {
    class gg {
    int tt = 100;
    }
    }

    class aa {
    class bb {
    int jj = 10;
    class cc {
    { int ff = TheOuter.aa.bb.this.jj;
    // 无法直接访问到gg不在链关系内
    System.out.println(ff);
    }
    }
    }
    }
    }

    2 创建一个内部类 new aa().new bb().new()cc 实际上是调用 外层类实例.new 本层构造函数()
    如果内部类是static的不需要外层类的实例 多个static嵌套的内部类的实例 aa.bb.cc test = new aa.bb.cc();

    3
    class a0 {
    class b0 {
    }
    }

    class vvv{
    class ff extends a0.b0 {// ff这里不是内部类也行
    ff(a0 kk){
    kk.super();
    }
    }
    }
    继承自内部类要调用父类的外层类的super()

    4
    class dd {
    void print(){
    System.out.println("dd.println is there");
    }
    class kk {
    kk(int i){}
    class cc {
    void pp() {
    System.out.println("****");
    }
    void ddpp() {
    dd.this.print();
    }
    }
    }
    }

    class aa {
    public static void main (String agrs[]) {
    dd.kk.cc test = new dd().new kk(10).new cc();
    test.ddpp();
    }
    }
    在类内部可以是使用外层类,但是如果生成一个实例的句柄就没有提供访问上层类的功能。


    5 this 是指本类的实例

    6 缺省的new
    class cc {
    {
    new test();
    }
    class kk {
    {
    System.out.println("there kk");
    }
    }

    class test {
    {
    new kk();
    }
    class kk {
    {
    System.out.println("there test_kk");
    }
    }
    }
    }
    可以直接使用new,new的范围可以是 之际外层.this.new 和this.new 但是如果内层与外层出现同名类以内部优先

    7
    //当有链关系的时候要注意类不要重名
    class vv {
    class bb {} //!
    class kk {
    //class vv{} 这样就会出错
    class bb {} //!这样就不会出错
    }
    }

    8
    class a0 {
    class b0 {
    }
    }

    class vvv{
    class ff extends a0.b0 {// 不是内部类也行
    ff(a0 kk){
    kk.super();
    }
    }
    }
    继承自内部类要调用父类的外层类的super()

    9 匿名内部类
    interface oo {
    //oo(int g) {}
    int k = 10;
    void pt();
    }

    class pp {
    pp(int g) {
    }
    int get() {
    return 100;
    }
    }

    class me {
    /*
    interface oo {
    void pt();
    }
    */
    class kk{
    oo testmed() {
    final int i = 10;
    int g = 100;
    return new oo() {
    int kk;
    {
    // 使用外面的东西要声名成final
    // 继承接口内部优先
    // 匿名内部类没有构造函数,只能使用块,初始化
    kk = i + k ;
    }
    public void pt() {
    System.out.println(kk);
    }
    };
    }
    pp testmed0() {
    return new pp(10){ // 继承自类
    public int get() {
    return super.get() * 10;
    }
    };
    }
    }
    }
    匿名内部类可以继承自接口也可以继承自类,继承自类的构造函数中 可以有参数。

    10
    class bf {
    interface kk {}
    class aa {
    // 接口能嵌套在接口中(不受限制),或者嵌套在顶层,下面就不行
    //interface gg {}
    }
    }


    Tags:JA AV VA A内 
    作者:佚名 来源:不详

    共有评论 0相关评论
    发表我的评论
    • 大名:
    • 内容:
  • 澳门二十一点游戏赌场(www.0769online.com) © 2019 版权所有 All Rights Reserved. 邮箱:103150@qq.com 业务QQ:103150 手机:13549753683

    Power By Laoy8 SQL 3.0SP1 粤ICP备10098668号
  •