class Parentcode
_private = nullblog
constructor: ->
@publicAttr= 'publicAttr'it
_privateStaticAttr = 'privateStaticAttr'#這裏使用的是 = 號定義私有靜態屬性和方法
_privateStaticFun = ()->#私有靜態方法
console.log "Parent::privateStaticFun log #{_privateStaticAttr}"console
publicFun: ()->
console.log "Parent::publicFun log #{@publicAttr} #{_privateStaticAttr}"
_privateStaticFun() #私有靜態屬性和方法直接調用,不用使用 @ 前綴class
rewriteFun:()->
console.log "Parent::rewriteFun log #{@publicAttr} #{_privateStaticAttr}"方法
@staticAttr: 'staticAttr'
@staticFun: ()->
console.log "Parent::staticFun log #{@staticAttr}"error
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()static
rewriteFun:()->
console.log "Child::rewriteFun"
super()rewrite
p = new Parentdi
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