一个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);
}
}上面的代码是什么意思,请指教~~
public class BB
implements AA, Runnable {
private AA a;
.....
在BB的方法add里面
public void add(C c) {
if (a != null) {
a.add(c);
}
}上面的代码是什么意思,请指教~~
BB类自己实现了一个add方法,其方式是调用自己成员接口AA的add方法。
由于BB类也实现了add方法,BB类也实现了一个AA的接口。总之,接口就是为了隐藏具体的实现过程。比如这个BB类,想要使用add方法的时候,如果自己不implements AA接口,
需要调用a.add()。
而自己实现AA接口后,只需调用BB.add()。
同样作为AA接口的实现类,BB进一步隐藏了调用成员接口AA的过程。
想整明白一件事,这么做有什么作用?比如说
像const/ 多重继承什么的, 上面代码就算看懂,我说不出有什么用?
请指教
首先,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)。
一句话:BB里的add方法是调用实现AA接口的类对象的add方法.