How do you override fields in Scala?

时间:2015-12-08 19:29:46

标签: scala override visibility member

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?

1 个答案:

答案 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

我宁愿专注于"赞成合成而非继承"。