在我的斯卡拉項目,我有下面的類層次結構:如何限制公共方法訪問超類?
class A {
def methodA = ...
... other methods here ...
}
class B extends A {
... other methods here ...
}
在我的一流的設計,它非常有意義,使B
的A
一個子類。唯一的問題是methodA
僅適用於A
類,但不適用於B
類。不幸的是,我不能將methodA
設置爲私有,因爲它需要從類A
的任何實例中調用。
我是否必須重新考慮我的班級設計還是可以將訪問公共方法methodA
限制爲A
班級?
見http://en.wikipedia.org/wiki/Liskov_substitution_principle由此,A'的'任何情況下應該由'B',這是不能夠更換如果你不得不限制對'methodA'的訪問,那麼你應該重新考慮你的類設計。 – godfatherofpolka
「唯一的問題是methodA只適用於A類」 - 那麼爲什麼要擴展B來包含它呢? – brumScouse
@brumScouse類'A'還有其他一些對類'B'有用的方法,除了這個方法'methodA'外。這就是爲什麼我用類「A」擴展類「B」。 – pemistahl