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


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

原文地址:https://www.cnblogs.com/houjun/p/4802196.html