如何让F#父类私有字段仅对继承类及其子类可见?
F#中如何让父类字段仅对子类及其子类可见?
你当前的代码通过公开成员A让子类Child访问父类Parent的私有字段a,但A是公开成员,导致任何外部代码都能通过Parent实例访问到a的值。要实现a仅对继承类及其子类可见、对外部保持私有,可以用F#的protected访问修饰符来限制成员的可见性。
修改后的代码示例:
type Parent () = let a = 5 // 使用protected修饰成员,仅允许继承类访问 member protected _.A = a type Child () = inherit Parent () let b = base.A // 子类仍可正常访问该成员 // 外部代码无法访问Parent的A成员,以下代码会触发编译错误 // let p = Parent() // p.A
说明
protected修饰符会将成员的可见性限制在定义它的类以及所有继承自该类的子类(包括子类的子类)范围内。- 父类的私有字段
a依然保持私有,仅通过受保护的成员A暴露给继承类,外部代码无法直接访问A,也就间接保证了a不会被外部获取。
内容的提问来源于stack exchange,提问作者CarbonFlambe
相关产品推荐
相关产品推荐

