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     4.4 靜態屬性 靜態方法
 41     4.5 抽象類 繼承 多態
 42 
 43     
 44 */
 45 
 46 
 47 //1、ts中類的定義
 48 
 49     /*
 50     es5:
 51 
 52         function Person(name){
 53 
 54             this.name=name;
 55 
 56             this.run=function(){
 57 
 58                 console.log(this.name)
 59             }
 60         }
 61 
 62         var p=new Person('張三');
 63 
 64         p.run()
 65     */
 66 
 67 
 68   /*
 69         ts中定義類:
 70 
 71 
 72             class Person{
 73 
 74                 name:string;   //屬性  前面省略了public關鍵詞
 75 
 76                 constructor(n:string){  //構造函數   實例化類的時候觸發的方法
 77                     this.name=n;
 78                 }
 79 
 80                 run():void{
 81 
 82                     alert(this.name);
 83                 }
 84 
 85             }
 86             var p=new Person('張三');
 87 
 88             p.run()
 89   
 90   */
 91 
 92 
 93 
 94     /*
 95     class Person{
 96 
 97         name:string; 
 98 
 99         constructor(name:string){  //構造函數   實例化類的時候觸發的方法
100             this.name=name;
101         }
102 
103         getName():string{
104 
105             return this.name;
106         }
107         setName(name:string):void{
108 
109             this.name=name;
110         }
111     }
112     var p=new Person('張三');
113 
114     alert(p.getName());
115 
116 
117     p.setName('李四');
118 
119 
120     alert(p.getName());
121 
122 */
123 
124 
125 
126 
127 
128 //2、ts中實現繼承  extends、 super
129 
130 
131     // class Person{
132 
133     //     name:string;
134 
135     //     constructor(name:string){
136     //         this.name=name;
137     //     }
138 
139     //     run():string{
140 
141     //         return `${this.name}在運動`
142     //     }
143     // }
144     // // var p=new Person('王五');
145     // // alert(p.run())
146 
147 
148     // class Web extends Person{
149     //     constructor(name:string){
150 
151     //         super(name);  /*初始化父類的構造函數*/
152     //     }
153     // }
154 
155 
156     // var w=new Web('李四');
157     // alert(w.run());
158 
159 
160 
161 
162 
163 
164     //ts中繼承的探討  父類的方法和子類的方法一致
165 
166         // class Person{
167 
168         //     name:string;
169 
170         //     constructor(name:string){
171         //         this.name=name;
172         //     }
173 
174         //     run():string{
175 
176         //         return `${this.name}在運動`
177         //     }
178         // }
179         // // var p=new Person('王五');
180         // // alert(p.run())
181 
182 
183         // class Web extends Person{
184         //     constructor(name:string){
185 
186         //         super(name);  /*初始化父類的構造函數*/
187         //     }
188         //     run():string{
189 
190         //         return `${this.name}在運動-子類`
191         //     }
192         //     work(){
193 
194         //         alert(`${this.name}在工作`)
195         //     }
196         // }
197 
198 
199         // var w=new Web('李四');
200         // // alert(w.run());
201 
202         // // w.work();
203 
204         // alert(w.run());
205 
206 
207 
208 
209 
210 
211 
212 
213 
214 // 3 類里面的修飾符  typescript里面定義屬性的時候給我們提供了 三種修飾符
215 
216 /*
217     public :公有          在當前類里面、 子類  、類外面都可以訪問
218     protected:保護類型    在當前類里面、子類里面可以訪問 ,在類外部沒法訪問
219     private :私有         在當前類里面可以訪問,子類、類外部都沒法訪問
220 
221     屬性如果不加修飾符 默認就是 公有 (public)
222 
223 */
224 
225 
226 
227 //public :公有          在類里面、 子類  、類外面都可以訪問
228 
229 
230             //   class Person{
231 
232             //         public name:string;  /*公有屬性*/
233 
234             //         constructor(name:string){
235             //             this.name=name;
236             //         }
237 
238             //         run():string{
239 
240             //             return `${this.name}在運動`
241             //         }
242             //     }
243             //     // var p=new Person('王五');
244             //     // alert(p.run())
245 
246 
247             //     class Web extends Person{
248             //         constructor(name:string){
249 
250             //             super(name);  /*初始化父類的構造函數*/
251             //         }
252             //         run():string{
253 
254             //             return `${this.name}在運動-子類`
255             //         }
256             //         work(){
257 
258             //             alert(`${this.name}在工作`)
259             //         }
260             //     }
261 
262             //     var w=new Web('李四');
263 
264             //     w.work();
265 
266 
267         //類外部訪問公有屬性
268 
269 
270                 //   class Person{
271 
272                 //     public name:string;  /*公有屬性*/
273 
274                 //     constructor(name:string){
275                 //         this.name=name;
276                 //     }
277 
278                 //     run():string{
279 
280                 //         return `${this.name}在運動`
281                 //     }
282                 // }
283 
284                 // var  p=new Person('哈哈哈');
285 
286                 // alert(p.name);
287 
288 
289 
290 
291 
292 //protected:保護類型    在類里面、子類里面可以訪問 ,在類外部沒法訪問
293 
294 
295             //   class Person{
296 
297             //         protected name:string;  /*公有屬性*/
298 
299             //         constructor(name:string){
300             //             this.name=name;
301             //         }
302 
303             //         run():string{
304 
305             //             return `${this.name}在運動`
306             //         }
307             //     }
308                 // var p=new Person('王五');
309                 // alert(p.run())
310 
311 
312                 // class Web extends Person{
313                 //     constructor(name:string){
314 
315                 //         super(name);  /*初始化父類的構造函數*/
316                 //     }                  
317                 //     work(){
318 
319                 //         alert(`${this.name}在工作`)
320                 //     }
321                 // }
322 
323                 // var w=new Web('李四11');
324 
325                 // w.work();
326 
327                 // alert( w.run());
328 
329 
330                 
331         //類外外部沒法訪問保護類型的屬性
332 
333 
334                 // class Person{
335 
336                 //     protected name:string;  /*保護類型*/
337 
338                 //     constructor(name:string){
339                 //         this.name=name;
340                 //     }
341 
342                 //     run():string{
343 
344                 //         return `${this.name}在運動`
345                 //     }
346                 // }
347 
348                 // var  p=new Person('哈哈哈');
349 
350                 // alert(p.name);
351 
352 
353 
354 
355 
356 // private :私有        在類里面可以訪問,子類、類外部都沒法訪問
357             
358 
359                 // class Person{
360 
361                 //     private name:string;  /*私有*/
362 
363                 //     constructor(name:string){
364                 //         this.name=name;
365                 //     }
366 
367                 //     run():string{
368 
369                 //         return `${this.name}在運動`
370                 //     }
371                 // }
372 
373 
374                 // class Web extends Person{
375 
376                 //     constructor(name:string){
377                 //         super(name)
378                 //     }
379 
380                 //     work(){
381 
382                 //         console.log(`${this.name}在工作`)
383                 //     }
384                 // }
385 
386 
387 
388     class Person{
389 
390         private name:string;  /*私有*/
391 
392         constructor(name:string){
393             this.name=name;
394         }
395 
396         run():string{
397 
398             return `${this.name}在運動`
399         }
400     }
401 
402     var p=new Person('哈哈哈');
403 
404     alert(p.run());

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM