For instance, buf is protected variable in BAOS. I would like to make it public. Currently, I resort to duplicate name
$("#selectId").empty();
Can I change the visibility without inventing another name, like I override the methods?
答案 0 :(得分:2)
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[];
所以访问它的唯一两种方法是:
java.io
包我没有看到任何改变可见度的方法"。但是,我会问自己,为什么我要公开访问这个内部变量,可能会遇到Liskov substitution principle个问题。
受保护的变量通常具有一些内在的不变性 与他们相关联(或者他们是公开的)。然后继承者需要 保持这些属性,人们可以搞砸或故意 违反。
基类可能会假设buf
没有被外部访问而不会违反Open/closed principle。
我宁愿专注于"赞成合成而非继承"。