继承与授权
问题描述:
下面的代码显示了如何通过继承来重用方法m()。如何为代表团工作?谢谢!继承与授权
class A{
int m();
}
class B extends A{}
B b =new B()
b.m();
答
class B {
int m() {
return new A().m();
}
}
或
class B {
private A a = new A();
int m() {
return a.m();
}
}
或
class B {
private A a;
public B(A a) {
this.a = a;
}
int m() {
return a.m();
}
}
答
继承意味着IS-A: “类B的一个实例-A类A的实例”。
组合意味着HAS-A:“B类HAS-A类实例的实例”。
像这样:
class B {
private A a;
public B(A a) { this.a = a; }
public int m() { return a.m(); }
}
B级代理给M()调用其A级
它帮助,如果都实现一个共同的接口的实例。
public interface DoSomething {
int m();
}
class A implements DoSomething {
public int m() { return 1; }
}
class B implements DoSomething {
private A a;
public B(A a) { this.a = a; }
public int m() { return a.m(); }
}