Java中的内部类

1、什么是内部类

    顾名思义,就是一个类定义在一个类里面

2、内部类的使用方法

    (1).首先我们定义一个A.java类

class A{
     int i;
    class B{
       int j;
       int funB()
      {
            int result=A.this.i+this.j;
            return result;
      }
   }
}

  (2)定义一个test.java的类

class test
{
  public static void main(String arg[])
  {
   A a=new A();
   a.i=10;

   A.B b=a.new B();
   b.j=20;

 System.out.println(b.funB());    //打印结果为30
 }
}

方法:将这两段代码添加到记事本中,分别命名为A.java和tese.java,并将这两个文件放在D:\src目录下.打开命令行  输入D: 回车 再输入 cd src(进入D:\src目录下)  再输入 javac *.java(编译所有的.java文件)  最后执行 java test(会执行test类中的main函数 输出30)

 

注:编译完后会生成入下文件:(A$B.clas这个文件就是内部类所产生的)

 

运行结果:

 

总结:类B可以使用类A中的成员变量或成员方法,但不属于继承

        一个内部类必定会关联一个外部类

 

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

    (1)、定义一个接口  A.java

     interface A
     {
        public void doSomething();
      }

  (2)、定义一个类 B.java

    class B{
     public void fun(A a)
       {
        System.out.println("B中的方法");
        a.doSomething();
       }
    }

  (3).定义一个类 test.java

    class test{
     public static void main(String arg[])
     {
       new B().fun(new A(){
       public void doSomething(){
       System.out.println("匿名");
       }
   });
  }
}


 

 

结果:

 

  

总结:什么是匿名内部类呢?  B类中的成员方法fun(A a)中的参数是A类的对象,并且在该成员方法中也调用了A类的对象的doSomething()方法,而实例化A的对象是在test.java类中进行的,并复写了doSomething()方法,既没有名字,又在test类中,因此叫做“匿名内部类”.

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值