zoukankan      html  css  js  c++  java
  • Java for Anfroid 学习之 内部类

    1、什么是内部类

    所谓的内部类,就是一个类定义在另一个类的里面。

    代码:

    class  A

    {        int i;

           class B

              {

               int  j;

               int func(){

               int result = i +j;

               return result;

                }

               }

    }

    注意:内部类可以随意使所在类的成员变量和方法,饭这并不意味着是继承关系。

    这个类编译后生成的编译文件有如下两个:

    A$B.class

    A.class


    2、内部类的使用方法

    看代码,用到上述的A.java

    class Test

    {

             public static void main(String args[ ])

             {

                 A a = new A();             //生成外部类对象

                 A.B b = new A().new B();    //生产内部类对象

                 a.i = 3;

                 b.j = 2;

                System.out.println(b.func()); //执行结果为 5

              }

    }

    3、匿名内部类的使用方法

    (1 )常规写法:

    //定义一个接口A
    interface A
    {
        public void doSomething();
    }
    ------------------------------------------------------->
    //接口A的实现方类
    class AImpl implements A
    {
        public void doSomething(){
            System.out.println("A接口的实现类 ");
        }
    }
    ------------------------------------------------------->
    //定义一个B类,在其中调用A接口,使用接口就要使用其实现类AImpl
    class B
    {
        public void func(A a)
        {
            System.out.println("B类的func函数");
            a.doSomething();
        }
    }
    ------------------------------------------------------->
    //测试类

    class Test
    {
        public static void main(String args[]){
            AImpl al  = new AImpl();
            A a = al;
            B b = new B();
            b,func();
        }
    }
    ------------------------------------------------------>
    (2 )匿名内部类的写法:
    class Test
    {
        public static void main(String args[]){
            AImpl al  = new AImpl();
            A a = al;
            B b = new B();
            b,func(new A(){    //没有名字的类,叫做匿名类,且在内部,所以叫内部类。
                public void doSomething(){
                System.out.println("A接口的实现类 ");
            });
        }
    }


    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    [spoj DISUBSTR]后缀数组统计不同子串个数
    [poj 3261]后缀数组+滑窗最小值
    [poj 1743]差分+后缀数组
    [codechef MEXDIV]Mex division
    JavaScript中的数组和对象 增删遍
    ajax返回的值有两种方法,一种是把async:true改为false。 另一种是回调函数。
    使用smart-npm和npm安装完毕之后发现 不是内部命令和外部命令!
    移动端rem设置,自动更改html<font-size>
    总结js创建object的方式(对象)
    用css方法 可以实现多行 超出宽度 出点点点号
  • 原文地址:https://www.cnblogs.com/houjun/p/4802196.html
Copyright © 2011-2022 走看看