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接口的实现类 ");
            });
        }
    }


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

  • 相关阅读:
    Flink实例(四十七):状态管理(十一)自定义操作符状态(五)广播状态(Broadcast state)(三)
    Flink实例(四十六): Operators(七)多流转换算子(二)CONNECT, COMAP和COFLATMAP
    python题库
    python---replace函数
    算法图解--读书笔记
    python里的StringIO
    python通过sha1和base64生成签名
    python调用接口方式
    智能停车场车牌识别系统【python】
    leetcode 查找算法(三)
  • 原文地址:https://www.cnblogs.com/houjun/p/4802196.html
Copyright © 2011-2022 走看看