有人说可以这样:
newClass implements interface1, interface2 {
Class1 obj1;
Class2 obj2;method1{
obj1.method1;
}method2 {
obj2.method2;
}} 用聚合的方法貌似可以,不过看起来很丑!而且一点也不面向对象啊?子类为什么要聚合多个父类呢???
newClass implements interface1, interface2 {
Class1 obj1;
Class2 obj2;method1{
obj1.method1;
}method2 {
obj2.method2;
}} 用聚合的方法貌似可以,不过看起来很丑!而且一点也不面向对象啊?子类为什么要聚合多个父类呢???
“Java不能多重继承类(实现),如何解决代码复用的问题”???
用聚合的办法可以,不过子类拥有两个父类的引用似乎有些丑陋
java里面只能从一个父类继承
如果你的类需要2种特性,可以实现2个接口
{
fly()
}FireWoman
{
fire()
}CheerLeader
{
FlyMan dad;
Firewoman mum;fly()
{
dad.fly();
}fire()
{
mum.fire();
}
}呵呵,看起来,Cheerleader并没有继承她父母的超能力,
当别人让她.fly的时候,她就说,来老爸fly一个。
当别人让她.fire的时候,她就说,来老妈fire一个。大家就当我纯扯淡,我只想说,这样确实有些丑陋。
所以java舍弃了多继承,因为这个东西带来的坏处>好处。然而所谓的好处,也可以通过接口的机制来得到更完美的解决。
但是如果非要直接继承于两个或者多个类(非接口),那么有什么办法没?答案是:没有
但是,在OO设计中,这样的问题视乎解决的目标,比如,有个类C,他需要非别能被向上转型为A和B,因为现在有两个方法
fa(A a),fb(B b),我们想要复用这两个方法。
那么一个很好的解决办法是“内部类”,因为内部类是可以访问外围类一切对象的。
class C extends A{
B getB(){
return B(){
};
}
}
C c = new C();
fa(c);
fb(c.getB);当然,如果非要楼主说的那样不“丑陋”,要明确的让拉拉队长和塔父母分别有个“is-a”的关系,很遗憾,这个目标不能达到。