1
例如,buf在BAOS中是受保護的變量。我想把它公開。目前,我求助於重複名稱你如何覆蓋斯卡拉字段?
class Baos extends ByteArrayOutputStream {
def getbuf = buf // expose the buffer
}
我可以改變的知名度,而不用發明的另一個名字,就像我覆蓋的方法?
例如,buf在BAOS中是受保護的變量。我想把它公開。目前,我求助於重複名稱你如何覆蓋斯卡拉字段?
class Baos extends ByteArrayOutputStream {
def getbuf = buf // expose the buffer
}
我可以改變的知名度,而不用發明的另一個名字,就像我覆蓋的方法?
buf
是一個受保護的變量:
26 package java.io;
...
45 public class ByteArrayOutputStream extends OutputStream {
46
47 /**
48 * The buffer where data is stored.
49 */
50 protected byte buf[];
所以,唯一的2種方式來訪問它是:
java.io
內從類訪問它包我沒有看到任何方式「改變能見度」。但是我會問自己爲什麼我想讓這個內部變量可以公開訪問,冒着Liskov substitution principle問題。
受保護的變量通常有一些固有的不變性 與他們相關聯(否則他們會公開)。繼承者則需要 來維護那些屬性,人們可以搞砸或故意 違反。
基類可能會做出很多關於buf
不被外部訪問以不違反Open/closed principle的假設。
我寧願把重點放在「支持構成而不是繼承」上。
我認爲這是不可能的。你的解決方案有什麼問題? –