关于protected的理解
protected BaseEnum(int id, String name) { this(id, name, true) ; }
1、在定义的时候 什么场景下用protected?
ANS:protected 的可见地方是这个class内,和它的子类所以一般需要让子类能修改的方法,变成protected
举个例子:
class Animal { private void eat(){ } }
所有的动物都能吃,但是如果private的话,Animal的子类就无法扩展了。
所以一般定义成class Animal { protected void eat(){ } },那么animal的子类可以扩展成各种吃法。当然protected还是属于内部方法,不像public那样可以被别的类调用。这个主要为了实现信息隐藏。
一般这么定义class Animal { protected void digest(){} public void eat(){} }
digest就是消化啦,消化不需要被别人调用的,属于内部方法,但是各种动物猫狗人消化方式不一样。但是eat应该是个公用方法,可以被别人调用。
this()是调用自己这个类的构造函数,对这个构造函数重载了一个三个参数的构造函数。2个参数的构造函数调用三个参数的构造函数,这个情景一般是第三个参数大部分情况下都不需要传,用默认值true就可以。
所以为了用起来简单,大家可以尽可能用2个参数的那个构造函数,当然高阶用户可以使用3个构造函数的。