coffeescript 继承、私有方法、私有属性、公共方法、公共属性、静态方法、静态属性实现...

class Parent

_private = null

constructor: ->
@publicAttr= 'publicAttr'

_privateStaticAttr = 'privateStaticAttr'#这里使用的是 = 号定义私有静态属性和方法
_privateStaticFun = ()->#私有静态方法
console.log "Parent::privateStaticFun log #{_privateStaticAttr}"


publicFun: ()->
console.log "Parent::publicFun log #{@publicAttr} #{_privateStaticAttr}"
_privateStaticFun() #私有静态属性和方法直接调用,不用使用 @ 前缀


rewriteFun:()->
console.log "Parent::rewriteFun log #{@publicAttr} #{_privateStaticAttr}"

@staticAttr: 'staticAttr'
@staticFun: ()->
console.log "Parent::staticFun log #{@staticAttr}"


class Child extends Parent
childPublicFun: ()->
try
_privateStaticFun()#报错 TypeError:Object #<Parent> has no method '_privateStaticFun'
catch e
console.log "_privateStaticFun() is error"
console.log "Child::childPublicFun"
@publicFun()

rewriteFun:()->
console.log "Child::rewriteFun"
super()

p = new Parent

p2 = new Parent
p2.publicAttr = "p2 publicAttr"

c = new Child

Parent.staticFun()
#Parent::staticFun log staticAttr
try
p.staticFun()#报错 TypeError:Object #<Parent> has no method 'staticFun'
catch e
console.log "p.staticFun() is error"

p.publicFun()
#Parent::privateStaticFun log privateStaticAttr
#Parent::publicFun log publicAttr privateStaticAttr
p2.publicFun()
#Parent::privateStaticFun log privateStaticAttr
#Parent::publicFun log p2 publicAttr privateStaticAttr

try
p._privateStaticFun()#报错 TypeError:Object #<Parent> has no method '_privateStaticFun'
catch e
console.log "p._privateStaticFun() is error"


Child.staticFun()
#Parent::staticFun log staticAttr

c.publicFun()
#Parent::privateStaticFun log privateStaticAttr
#Parent::publicFun log publicAttr privateStaticAttr

c.childPublicFun()
#_privateStaticFun() is error
#Child::childPublicFun
#Parent::publicFun log publicAttr privateStaticAttr
#Parent::privateStaticFun log privateStaticAttr

c.rewriteFun()
#Child::rewriteFun
#Parent::rewriteFun log publicAttr privateStaticAttr

转载于:https://www.cnblogs.com/hbxeagle/p/3719300.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值