当前位置: 技术问答>java相关
在JAVA中如何用接口实现C++的多重继承呀?帮帮忙!
来源: 互联网 发布时间:2015-03-22
本文导语: 我看资料好象JAVA必须要在继承的接口中实现接口中声明的方法,这并不能实现C++中的多重继承嘛! 比如:C++中,有类A、B,如果类C继承了A和B,那么就可以直接用C调用A或者B中实现了的方法。 而在JAVA中,如果定...
我看资料好象JAVA必须要在继承的接口中实现接口中声明的方法,这并不能实现C++中的多重继承嘛!
比如:C++中,有类A、B,如果类C继承了A和B,那么就可以直接用C调用A或者B中实现了的方法。
而在JAVA中,如果定义两个接口A、B,然后分别有他们的实现类A'、B',那么即使类C继承自接口A、B,也不能使用A',B'中实现的方法呀,还不是要在C中重新实现A、B中的方法,这样做有什么意义?
是不是我理解错了?该怎么做呢?
比如:C++中,有类A、B,如果类C继承了A和B,那么就可以直接用C调用A或者B中实现了的方法。
而在JAVA中,如果定义两个接口A、B,然后分别有他们的实现类A'、B',那么即使类C继承自接口A、B,也不能使用A',B'中实现的方法呀,还不是要在C中重新实现A、B中的方法,这样做有什么意义?
是不是我理解错了?该怎么做呢?
|
不要被c++限制你的思路,不过真的有很多人曾经深爱过,也深爱着C++我就是其中之一,
interface是一个很不错的东东,他可以帮助你设计一个层次结构跟简单的framework在设计时适当的使用interface&abtract class会使其结构优美,灵活,适应性好。(可以参看design parten)
使用接口几乎可以实现任何c++中能够实现的结构。在多重继承时要多考虑一下时不是值得该使用什么样的方式,不要盲目使用多继承
你所说的那种情况在java中是完全可以实现的,但是干吗要那样呢,
(
interface B{
void fly();
}
class C {
void swim(){System.out.print("Swiming");};
}
class A extends C implements B{
void fly(){System.out.print("fly");}
}
public class MutilExtends extends A{})
bless U!!!
interface是一个很不错的东东,他可以帮助你设计一个层次结构跟简单的framework在设计时适当的使用interface&abtract class会使其结构优美,灵活,适应性好。(可以参看design parten)
使用接口几乎可以实现任何c++中能够实现的结构。在多重继承时要多考虑一下时不是值得该使用什么样的方式,不要盲目使用多继承
你所说的那种情况在java中是完全可以实现的,但是干吗要那样呢,
(
interface B{
void fly();
}
class C {
void swim(){System.out.print("Swiming");};
}
class A extends C implements B{
void fly(){System.out.print("fly");}
}
public class MutilExtends extends A{})
bless U!!!
|
Java的“多重继承”
接口只是比抽象类“更纯”的一种形式。它的用途并不止那些。由于接口根本没有具体的实施细节——也就是说,没有与存储空间与“接口”关联在一起——所以没有任何办法可以防止多个接口合并到一起。这一点是至关重要的,因为我们经常都需要表达这样一个意思:“x从属于a,也从属于b,也从属于c”。在C++中,将多个类合并到一起的行动称作“多重继承”,而且操作较为不便,因为每个类都可能有一套自己的实施细节。在Java中,我们可采取同样的行动,但只有其中一个类拥有具体的实施细节。所以在合并多个接口的时候,C++的问题不会在Java中重演。
在一个衍生类中,我们并不一定要拥有一个抽象或具体(没有抽象方法)的基础类。如果确实想从一个非接口继承,那么只能从一个继承。剩余的所有基本元素都必须是“接口”。我们将所有接口名置于implements关键字的后面,并用逗号分隔它们。可根据需要使用多个接口,而且每个接口都会成为一个独立的类型,可对其进行上溯造型。
接口只是比抽象类“更纯”的一种形式。它的用途并不止那些。由于接口根本没有具体的实施细节——也就是说,没有与存储空间与“接口”关联在一起——所以没有任何办法可以防止多个接口合并到一起。这一点是至关重要的,因为我们经常都需要表达这样一个意思:“x从属于a,也从属于b,也从属于c”。在C++中,将多个类合并到一起的行动称作“多重继承”,而且操作较为不便,因为每个类都可能有一套自己的实施细节。在Java中,我们可采取同样的行动,但只有其中一个类拥有具体的实施细节。所以在合并多个接口的时候,C++的问题不会在Java中重演。
在一个衍生类中,我们并不一定要拥有一个抽象或具体(没有抽象方法)的基础类。如果确实想从一个非接口继承,那么只能从一个继承。剩余的所有基本元素都必须是“接口”。我们将所有接口名置于implements关键字的后面,并用逗号分隔它们。可根据需要使用多个接口,而且每个接口都会成为一个独立的类型,可对其进行上溯造型。
|
在Java中不可以!!!!!
这是语言设计时已经考虑的问题。java不打算实现这样的东西。
这是语言设计时已经考虑的问题。java不打算实现这样的东西。
|
另外,java的implement支持多继承,就是说a接口可以同时继承b,c,d接口。