如果我有一个包含方法f的类C,它将D类对象作为参数(我定义的另一个类)
如果我在方法f中调用对象D的方法,我会违反得墨忒耳的法则吗?为什么?
例如:
public C {
public void f(D object) {
int x = object.sumOfNumbers(2,3);
}
}
答案 0 :(得分:2)
此次通话不违反得墨忒耳的法律。要违反它,你需要这样做:
在这种情况下,对象A可以请求服务(调用方法) 对象实例B,但是对象A不应该通过"到达"对象B到 访问另一个对象C,以请求其服务
来源:Wikipedia
您的代码中没有到达对象C.
使用维基百科中使用的类名(A,B,C),您的问题代码应如下所示:
public class A {
public void f(B object) {
int x = object.sumOfNumbers(2,3);
}
}
这里没有您正在访问的C类。
这违反了这项法律:
public class A {
public void f(B object) {
C myC = object.getC();
int x = myC.sumOfNumbers(2,3);
}
}