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


class Parent
constructor: ->

_privateAttr = ‘privateAttr‘
_privateFun = ()->
console.log "Parent::privateFun log #{_privateAttr}"

publicAttr: ‘publicAttr‘
publicFun: ()->
_privateFun()
console.log "Parent::publicFun log #{@publicAttr} #{_privateAttr}"

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

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

p = new Parent

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::privateFun log privateAttr
#Parent::publicFun log publicAttr privateAttr

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

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

c.publicFun()
#Parent::privateFun log privateAttr
#Parent::publicFun log publicAttr privateAttr

c.childPublicFun()
#_privateFun() is error
#Child::childPublicFun

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

时间: 2024-10-29 04:40:14

coffeescript 继承、私有方法、私有属性、公共方法、公共属性、静态方法、静态属性实现的相关文章

C# 静态方法 静态属性 调用静态方法

C#的类中可以包含两种方法:静态方法和非静态方法. 使用了static 修饰符的方法为静态方法,反之则是非静态方法. 静态方法是一种 特殊的成员方法,它不属于类的某一个具体的实例,而是属于类本身.所以对静态方法不需要首先创建一个类的实例,而是采用类名.静态方法的格式 . 1.static方法是类中的一个成员方法,属于整个类,即不用创建任何对象也可以直接调用! static内部只能出现static变量和其他static方法!而且static方法中还不能使用this....等关键字..因为它是属于整

对象方法、类方法、原型方法 &amp;&amp; 私有属性、公有属性、公有静态属性

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>test</title> </head> <body> <script> //对象构造函数 function Atest(name){ //私有属性,只能在对象构造函数内部使用 var class

js公有、私有、静态属性和方法

/* 静态方法/属性:无需实例化就可以使用,不能通过this调用,只能通过对象本身,即对象名User,实例无法调用 公有方法/属性:需要实例化才能用,静态方法无法调用 */ function User(){ this.name="happy";//公有属性 this.getname=function(){//公有方法 return this.name; } var age;//私有属性 function setAge(){//私有方法 age=1; } this.getAge=func

js 对象方法、类方法、原型方法的区别;私有属性、公有属性、公有静态属性的区别

1 <html> 2 <head> 3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 4 <title>test</title> 5 </head> 6 <body> 7 <script> 8 //对象构造函数 9 function Atest(name){ 10 //私有属性,只能

ES6入门六:class的基本语法、继承、私有与静态属性、修饰器

基本语法 继承 私有属性与方法.静态属性与方法 修饰器(Decorator) 一.基本语法 1 class Grammar{ 2 constructor(name,age){ //定义对象自身的方法和属性 3 this.name = name, 4 this.age = age 5 } 6 // 在原型上定义只读属性 7 get inva(){ 8 return "JS"; 9 } 10 //在原型上定义可读写属性 11 set skill(val){ 12 this._skill =

第174天:面向对象——公有属性、私有属性和静态属性

一.公有属性和私有属性 1 //对象构造函数 2 //私有属性好处: 安全 就类似闭包中的函数一样 减少污染 3 function Person(name){ 4 //私有属性,只能在对象构造函数内部使用 5 var className = "用户对象"; 6 //公有属性,在对象实例化后调用 7 this.name = name; 8 //私有方法 9 var privateFunction = function(){ 10 alert(this.name); //公有属性 11 a

静态属性,函数闭包,call/apply,继承

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>静态属性,函数闭包,call/apply,继承</title> <script type="text/javascript"> /* 一:静态属性 在一些面向对象语言里,可以使用static关键字来显示的定义属性和方法.这一点

java中静态属性和和静态方法的继承问题 以及多态的实质

首先结论是:java中静态属性和和静态方法可以被继承,但是没有被重写(overwrite)而是被隐藏. 静态方法和属性是属于类的,调用的时候直接通过类名.方法名完成的,不需继承机制就可以调用如果子类里面定义了静态方法和属性,那么这时候父类的静态方法 或属性称之为“隐藏”,你如果想要调用父类的静态方法和属性,直接通过父类名.方法名或变量名完成,至于是否继承一说,子类是有继承静态方法和属性,但是 跟实例方法和属性不太一样,存在“隐藏”的这种情况. 多态之所以能够实现是依赖于 继承 接口和 重写 .重

Java静态属性、静态方法、非静态属性、非静态方法的继承问题简单了解

package com.book.web.controller; /**  * 父类  * @author liweihan  *  */ public class Parent { public String normalStr = "父类非静态属性"; public static String staticStr = "父类静态属性"; public String changeStr = "父类-变量"; public static Stri

JS Foo.getName笔试题解析,杂谈静态属性与实例属性,变量提升,this指向,new一个函数的过程

 壹 ? 引 Foo.getName算是一道比较老的面试题了,大致百度了一下在17年就有相关文章在介绍它,遗憾的是我在19年才遇到它,比较奇妙的是现在仍有公司会使用这道题.相关解析网上是有的,这里我站在自己的理解做个记录,也算是相关知识的一次复习,题目如下,输出过程也直接标出来了: function Foo() { getName = function () { console.log(1); }; return this; }; Foo.getName = function () { cons