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的假设。
我宁愿把重点放在“支持构成而不是继承”上。
我认为这是不可能的。你的解决方案有什么问题? –