[英]How to design classes in this use case?
我在java中有三个类-A,B,C。条件-
如果我将 B,C 的成员声明为受保护并将所有类放入 package,我将无法执行第三个和第四个条件。 这里的方法应该是什么?
我可以看到大多数答案都提到我可以像 A <- B <- C 那样直接做 inheritance。但是,假设我们有像病人和医生这样的类。 因此,医生需要知道给定患者 ID 的患者的详细信息。 明智的实施如果我从患者扩展医生,那将解决用例。 但是,从逻辑上讲,将医生从病人身上延伸出来对我来说没有意义,因为医生不是病人。
您应该为每个用例创建适当的接口,而不是直接使用类接受接口
例如它看起来像
interface AccessibleA {
int getA();
void setA(int a);
// other methods declarations - non accessors
}
interface InaccessibleA {
// other methods declarations - non accessors
}
class A implements AccessibleA, InaccessibleA {
private int a;
// getter and setter
public A(AccessibleB b, AccessibleC c) {
// you can assign these values or use them
}
// other methods
}
// the same interfaces for B and C
class B implements AccessibleB, InaccessibleB {
private int b;
// getter and setter
public A(InaccessibleA a, AccessibleC c) {
// you can assign these values or use them
}
// other methods
}
// etc
不幸的是,在 Java 中没有“友元函数”实现( 在 C++ 中有类似的东西)但是有一些方法可以模拟这种行为。 例如阅读:
只是我不确定你的情况是否值得
像这样
package c;
class C {
protected String foo;
}
package b;
class B extends C {
protected String bar;
}
package a;
class A extends B {
protected String baz;
}
protected 字段对不同 package 中的子类可见,默认(package-private)字段仅对相同 package 中的子类可见。
查看文档
你可以在这里使用继承。 如果C是parent most class,那么B可以继承C,A可以继承B。那么在这个场景下,A可以访问他的parent B和parent的parent C,B可以访问他的parent C,而C不能访问A3.86或8810378658 B 不能访问 A,因为 B 是 A 的父级 class。
我想我应该提到我在写问题时正在考虑的确切用例。 我稍后相应地更新了我的问题。 对于我的用例,我认为聚合是正确的方法,而不是 inheritance,因为类具有 has-a 关系而不是 is-a。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.