Java内部类

Java的内部类是个很好玩的东东,Java不支持多重继承,所以用接口和内部类来解决了这个问题。

内部类声明比较简单,直接声明就可以了
例如:
01  public   class   A
02  {
03    public   static   void   main ( string   args [])
04    {
05      A   a   =   new   A ();
06    }
07    void   test ()
08    {
09      System . out . println ( "A" );
10    }
11    class   extends   A
12    {
13      void   test ()
14      {
15        System . out . println ( "B" );
16      }
17    }
18  }
很简单的一个内部类就出现了。但是我没有实例化它,因为他和外部类的实例化稍稍有点不同。
第一种在外部实例化:
20  A . ob   =   new   A . B();
很简单吧,但是假如要在外部类实例话内部类的话就不同了,假如我在main函数里实例化内部类B
01  public   class   A
02  {
03     public   static   void   main ( string   args [])
04     {
05       A   a   =   new   A ();
06      B b  =   getobject ();
07     }
08     void   test ()
09     {
10       System . out . println ( "A" );
11     }
12     public   getobject ()
13     {
14       return   new  B();
15     }
16     class   extends   A
17     {
18       void   test ()
19       {
20         A . this . test ();
21         System . out . println ( "B" );
22       }
23     }
24  }
好这里你看,多了一个getobject的方法,要通过这个方法来实例化B才不会有错,顺便为了少写两行,我也把如何在内部类里调用外部类函数写了哦。。就是
20         A . this . test ();
好了。。大致了解就这些。。先写到这。。第一次写blog还是要忙着复习考试~~
最近rp不好。。顺便求下~~

好吧,再补充些东西:
我刚才说了是在main方法里实例化内部类,那么在其他方法里呢?
01  public   class   Test   {
02 
03       class   Content {
04           private   int   i   =   1 ;
05           public   int   value ()
06           {
07               return   i ;
08           }
09       }
10       public   void   ship ( String   dest )
11       {
12           Content   t   =   new   Content ();
13       }
14       public   static   void   main ( String []   args )
15       {
16           //Content t = new Content(); //ERROR
17       }
18 
19  }
看吧,在其他方法里,可以直接这样实例化的,同样是方法为什么在main里面不行?
这样解释吧,main方法是游离在所有类外面的,对于内部类他是不可见的,所以要在main里面实例化只能按照前面的方法了。
那是不是就不能在main函数里直接实例化呢?
不是哦,有一个办法!------静态内部类!
代码如下:
01  public   class   Test   {
02 
03       static   class   Content {
04           private   int   i   =   1 ;
05           public   int   value ()
06           {
07               return   i ;
08           }
09       }
10       public   void   ship ( String   dest )
11       {
12           Content   t   =   new   Content ();
13       }
14       public   static   void   main ( String []   args )
15       {
16           Content   t   =   new   Content ();  //ERROR
17       }
18 
19  }
我把内部类声明为静态的,就可以了。
内部类其他方法等下次再写。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值