zoukankan      html  css  js  c++  java
  • 内部类

    1,成员内部类:    Outer$Inner.class

     (1)将类定义到了另一个类的内部。A类要直接访问B类中的成员时,可以将A类定义到B类中。作为B类的内部类存在。相当于外部类的一个成员。

     (2)访问规则:

           a)内部类可以直接访问外部类中的成员。

           b)外部类要想访问内部类,只能创建内部类的对象来访问。

           c)如果内部类权限是非私有的,就可以在外部其他程序中被访问到。就可以通过创建外部类对象完成。Outer.Inner in=new Outer().new Inner();

    Class Outer{
       
        class Inner{//非静态类
          show1(){      }  //非静态
        }
    
    }
    

      (3)内部类可以直接访问外部类中的成员,是因为内部类持有了外部类的引用:外部类名.this (Outer.this),但是如果内部类为静态的就没有此引用了。

    2,静态内部类

    Class Outer{
       
       static class Inner{
          show1(){      }  //非静态
          static show2(){    }//静态
        }
    
    }

       (1)静态,非私有的内部类访问方式:访问非静态成员

               Outer.Inner in=new  Outer.Inner();  in.show1();

       (2)静态,非私有的内部类访问方式:访问静态成员

              Outer.Inner.show2();

       注意:非静态内部类中只允许定义静态的常量(static final double PI=3.1415),不可以定义其他静态成员。

    3,局部内部类 Outer$1 Inner.class 将内部类定义到了局部位置上。

      (1)Java中的内部类不可以访问所在局部的局部变量,生命周期不同,编译时会报错。可以访问局部中的常量,final修饰的局部变量。

     4,匿名内部类Outer$1.class 简化书写的内部类。

       (1)使用前提:内部类需要继承或者实现外部的类或者接口。

        格式:new 父类or接口名(){子类的内容}

    abstract class FU{
         abstract void show();
    }
    class Outer{
       private int num=4;
       public void method(){
          
          new FU(){//匿名内部类
                   //覆盖FU中的抽象方法。
              public void show()
    {
    System.out.println("show------"+num);
    } }.show();//调用匿名内部类中的方法
    }
    }

     (2)匿名内部类其实就是一个子类对象 

  • 相关阅读:
    【测试】form表单完成html测试20道页面排列
    CSS选择器与CSS的继承,层叠和特殊性
    css语法特点和引入页面三种方式与其优先级
    10——PHP中的两种数组【索引数组】与【关联数组】
    C++走向远洋——66(十五周阅读程序)
    C++走向远洋——65(十五周、项目一)
    STL容器的使用
    STL迭代器的使用、正向、逆向输出双向链表中的所有元素
    C++走向远洋——64(项目三、数组类模板)
    C++走向远洋——63(项目二2、两个成员的类模板)
  • 原文地址:https://www.cnblogs.com/day93110/p/6489666.html
Copyright © 2011-2022 走看看