Lev*_*lho 5 c# java oop inheritance
我有一个关于如何用不允许多重继承的语言处理以下场景的理论问题.
想象一下,我有一个基类Foo,从中我希望创建三个子类:
想象一下,实现功能"A"和"B"的代码总是一样的.有没有办法只为"A"和"B"编写一次代码,然后将相应的类应用(或"继承")它?
嗯,我能看到您在 C#/Java 中实现这一目标的唯一方法是通过组合。考虑一下:
class Foo {
}
interface A {
public void a();
}
interface B {
public void b();
}
class ImplA implements A {
@Override
public void a() {
System.out.println("a");
}
}
class ImplB implements B {
@Override
public void b() {
System.out.println("b");
}
}
class Bar extends Foo {
A a = new ImplA();
public void a() {
a.a();
}
}
class Baz extends Foo {
B b = new ImplB();
public void b() {
b.b();
}
}
class Qux extends Foo {
A a = new ImplA();
B b = new ImplB();
public void b() {
b.b();
}
public void a() {
a.a();
}
}
Run Code Online (Sandbox Code Playgroud)
现在Qux
既具有通过普通继承的功能Foo
,又具有通过组合实现的A
功能B
。
归档时间: |
|
查看次数: |
488 次 |
最近记录: |