typescript静态属性,静态方法,抽象类,多态

  1 /*
  2 1、vscode配置自动编译
  3
  4     1.第一步   tsc --inti 生成tsconfig.json   改 "outDir": "./js",
  5
  6
  7     2、第二步 任务 - 运行任务  监视tsconfig.json
  8
  9
 10 2、typeScript中的数据类型
 11
 12     typescript中为了使编写的代码更规范,更有利于维护,增加了类型校验,在typescript中主要给我们提供了以下数据类型
 13
 14
 15         布尔类型(boolean)
 16         数字类型(number)
 17         字符串类型(string)
 18         数组类型(array)
 19         元组类型(tuple)
 20         枚举类型(enum)
 21
 22         任意类型(any)
 23         null 和 undefined
 24         void类型
 25         never类型
 26
 27 3、typeScript中的函数
 28
 29     3.1、函数的定义
 30     3.2、可选参数
 31     3.3、默认参数
 32     3.4、剩余参数
 33     3.5、函数重载
 34     3.6、箭头函数  es6
 35 4、typeScript中的类
 36
 37     4.1 类的定义
 38     4.2 继承
 39     4.3 类里面的修饰符
 40
 41     4.4 静态属性 静态方法
 42     4.5 抽象类 多态
 43
 44
 45 */
 46
 47
 48 // 静态属性 静态方法
 49
 50 /*
 51
 52     function Person(){
 53         this.run1=function(){
 54
 55         }
 56     }
 57     Person.name=‘哈哈哈‘;
 58
 59     Person.run2=function(){  静态方法
 60
 61
 62     }
 63     var p=new Person();
 64
 65     Person.run2(); 静态方法的调用
 66 */
 67
 68
 69
 70 /*
 71
 72
 73         function $(element){
 74
 75             return new Base(element)
 76         }
 77
 78         $.get=function(){
 79
 80         }
 81
 82         function Base(element){
 83
 84             this.element=获取dom节点;
 85
 86
 87             this.css=function(arr,value){
 88
 89                 this.element.style.arr=value;
 90             }
 91         }
 92
 93
 94
 95         $(‘#box‘).css(‘color‘,‘red‘)
 96
 97
 98         $.get(‘url‘,function(){
 99
100         })
101 */
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116     // class Per{
117     //     public name:string;
118     //     public age:number=20;
119     //     //静态属性
120
121     //     static sex="男";
122     //     constructor(name:string) {
123     //             this.name=name;
124     //     }
125     //     run(){  /*实例方法*/
126
127     //         alert(`${this.name}在运动`)
128     //     }
129     //     work(){
130
131     //         alert(`${this.name}在工作`)
132     //     }
133     //     static print(){  /*静态方法  里面没法直接调用类里面的属性*/
134
135     //         alert(‘print方法‘+Per.sex);
136     //     }
137     // }
138
139     // // var p=new Per(‘张三‘);
140
141     // // p.run();
142
143     // Per.print();
144
145     // alert(Per.sex);
146
147
148
149
150
151
152 //多态:父类定义一个方法不去实现,让继承它的子类去实现  每一个子类有不同的表现
153
154 //多态属于继承
155         /*
156
157
158                 class Animal {
159
160                     name:string;
161                     constructor(name:string) {
162                         this.name=name;
163                     }
164                     eat(){   //具体吃什么  不知道   ,  具体吃什么?继承它的子类去实现 ,每一个子类的表现不一样
165                         console.log(‘吃的方法‘)
166                     }
167                 }
168
169                 class Dog extends Animal{
170                     constructor(name:string){
171                         super(name)
172                     }
173                     eat(){
174
175                         return this.name+‘吃粮食‘
176                     }
177                 }
178
179
180                 class Cat extends Animal{
181
182                     constructor(name:string){
183                         super(name)
184                     }
185
186                     eat(){
187
188                         return this.name+‘吃老鼠‘
189                     }
190                 }
191
192         */
193
194
195
196 //typescript中的抽象类:它是提供其他类继承的基类,不能直接被实例化。
197
198
199 //用abstract关键字定义抽象类和抽象方法,抽象类中的抽象方法不包含具体实现并且必须在派生类中实现。
200
201
202 // abstract抽象方法只能放在抽象类里面
203
204
205 // 抽象类和抽象方法用来定义标准 。   标准:Animal 这个类要求它的子类必须包含eat方法
206
207
208 //标准:
209
210 abstract class Animal{
211
212     public name:string;
213     constructor(name:string){
214
215         this.name=name;
216
217     }
218     abstract eat():any;  //抽象方法不包含具体实现并且必须在派生类中实现。
219
220     run(){
221
222         console.log(‘其他方法可以不实现‘)
223     }
224 }
225
226
227 // var a=new Animal() /*错误的写法*/
228
229
230
231 class Dog extends Animal{
232
233     //抽象类的子类必须实现抽象类里面的抽象方法
234     constructor(name:any){
235         super(name)
236     }
237     eat(){
238
239         console.log(this.name+‘吃粮食‘)
240     }
241 }
242
243 var d=new Dog(‘小花花‘);
244 d.eat();
245
246
247
248
249 class Cat extends Animal{
250
251     //抽象类的子类必须实现抽象类里面的抽象方法
252     constructor(name:any){
253         super(name)
254     }
255     run(){
256
257
258     }
259     eat(){
260
261         console.log(this.name+‘吃老鼠‘)
262     }
263
264 }
265
266 var c=new Cat(‘小花猫‘);
267 c.eat();

原文地址:https://www.cnblogs.com/Spinoza/p/9372769.html

时间: 2024-10-29 19:05:30

typescript静态属性,静态方法,抽象类,多态的相关文章

python面向对象之静态属性/静态方法/类方法/组合

#!/usr/bin/env python # coding:utf-8 class Campus: def __init__(self,name,addr,type): self.Name = name self.Addr = addr self.Type = type def details(self): print("学样的详细信息, 名称:%s 地址:%s 类型:%s" %(self.Name,self.Addr,self.Type) ) c1 = Campus("南

php中静态属性静态方法的用法

static关键字用来修饰属性.方法,称这些属性.方法为静态属性.静态方法.static关键字声明一个属性或方法是和类相关的,而不是和类的某个特定的实例相关,因此,这类属性或方法也称为“类属性”或“类方法”. 如果访问控制权限允许,可不必创建该类对象而直接使用类名加两个冒号“::”调用.static关键字可以用来修饰变量.方法.不需要经过实例化,就可以直接访问类中static的属性和static的方法.static 的属性和方法,只能访问static的属性和方法,不能类访问非静态的属性和方法.因

类的自动加载,静态属性静态方法

类的自动加载 function 完成类的自动加载    param: $clas_name 是类的名称    说明: 当程序员使用到一个未定义的类时,就会自动的触发__autoLoad这个函数, 该函数是系统提供的 静态变量是属于所有对象,可以被所有对象共享 静态变量与静态方法 静态属性是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量. l  定义静态属性 访问修饰符 static 静态属性名;    stati

第49天python学习静态属性 静态方法

#静态属性:就是数据属性#定义个房间类# class Room:# def __init__(self,name,owner,width,length,heigh):# self.name=name# self.owner=owner# self.length=length# self.width=width# self.heigh=heigh## r1=Room("房号1120","zhangshang",10,20,3)# print("%s住的%s房

php父类中访问子类的静态属性

在类中,我们可以通过self访问本类或父类中的静态属性/静态方法,可以通过parent访问父类中的静态属性/静态方法. 可我们却没有关键字从父类中的方法访问子类的静态属性,这是由于父类是先于子类创建的,所以从逻辑上来讲从父类中访问子类的静态属性并不是一个好的选择. 但有些时候我们不得不这样做,那么我们可以通过get_class()方法实现: get_class()返回的是本对象名, get_class(obj)返回的是对象obj的名, 看下面这个例子: <?php class A {    fu

PHP中的抽象类与抽象方法/静态属性和静态方法/PHP中的单利模式(单态模式)/串行化与反串行化(序列化与反序列化)/约束类型/魔术方法小结

  前  言  OOP  学习了好久的PHP,今天来总结一下PHP中的抽象类与抽象方法/静态属性和静态方法/PHP中的单利模式(单态模式)/串行化与反串行化(序列化与反序列化). 1  PHP中的抽象类与抽象方法 1.什么是抽象方法?              没有方法体 {} 的方法,必须使用abstract 关键字修饰.这样的方,我们叫做抽象方法.                    abstract function say(); //    抽象方法 2.什么是抽象类?        

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

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

类和对象:静态属性、静态方法

在PHP中,使用关键字 static 修饰成员属性和成员方法被称为静态属性和静态方法.静态属性和静态方法不需要在类被实例化的情况下可以直接使用. 静态属性 与普通的成员属性不同,静态属性属于类本身而不属于类的任何实例.静态属性可以被看做是存储在类当中的全局变量,可以在任何地方通过类来访问它们. 由于静态属性不受任何具体对象的限制,所以不需要建立类实例,而可以直接引用类中的静态属性,使用语法格式如下: 类名称::$静态属性名称 其中,符号”::”被称作范围解析操作符,它可以用于访问静态成员.静态方

用JAVASCRIPT实现静态对象、静态方法和静态属性

Javascript语言的面向对象特征很弱,其他面向对象语言在创建类时只要使用关键字static即可指定类为静态类,Javascript没有提供static这样的关键字,要让Javascript也具有"静态"特性只有靠一些"奇技淫巧"了. 代码中列举了两种静态方法/属性的实现方式,一种是静态类的静态方法和属性,另一种是非静态类的静态方法和属性,代码说明都写在每行的代码注释里,这里就不重复了. /************************************