一个interface类 AABB是AA的 implements
public class BB
    implements AA, Runnable {
    private AA a;
     .....
在BB的方法add里面
   public void add(C c) {
if (a != null) {
    a.add(c);
}
    }上面的代码是什么意思,请指教~~
    

解决方案 »

  1.   

    表示BB实现了接口AA。因为AA约束BB要实现一个叫做add的方法。其他的很难讲。感觉像是一个链儿
      

  2.   

    是这个意思,BB类的成员接口AA,具有add方法。
    BB类自己实现了一个add方法,其方式是调用自己成员接口AA的add方法。
    由于BB类也实现了add方法,BB类也实现了一个AA的接口。总之,接口就是为了隐藏具体的实现过程。比如这个BB类,想要使用add方法的时候,如果自己不implements AA接口,
    需要调用a.add()。
    而自己实现AA接口后,只需调用BB.add()。
    同样作为AA接口的实现类,BB进一步隐藏了调用成员接口AA的过程。
      

  3.   

    自包含的一个类,在add的时候要检查一下对象是否为空,不为空才能add
      

  4.   

    我自己也有点绕,
    想整明白一件事,这么做有什么作用?比如说
    像const/ 多重继承什么的, 上面代码就算看懂,我说不出有什么用?
    请指教
      

  5.   

    呵呵,这个有点意思。我的理解是:
    首先,AA是接口,其中有一个add()方法
    BB是AA的实现类,所以BB必须实现add()方法
    但现在看来,BB不想自己实现add(),而是想把其他AA的实现类所实现的add()方法拿来用。
    所以BB自己组合了一个AA的实例a,只要他有办法用别的AA的实现类的实例来初始化这个a,他的目的就达到了。
    但是这个设计存在一个问题,如果用BB的实例去初始化a,就会形成无限递归,造成死循环,所以if (a != null)要改成if (a != null && !a instanceof BB)。
      

  6.   

    呵呵,同意Dan1980 ~~ ,大家多给点其他的想法,奇怪的代码~~
      

  7.   

    哎.......
    一句话:BB里的add方法是调用实现AA接口的类对象的add方法.