1. 程式人生 > >《Typecript 入門教程》 1、類

《Typecript 入門教程》 1、類

col ons con types 構造函數 ima src 方法 cnblogs

使用class + 類名 即可定義一個類,一個類中通常有3個成員:屬性、構造函數、方法;

在類內部引用屬性或方法事使用this調用,它表示我們訪問的是類的成員。

我們使用new構造了Greeter類的一個實例。 它會調用之前定義的構造函數,創建一個Greeter類型的新對象,並執行構造函數初始化它。

 1 class People{
 2     // 1.聲明 name 變量
 3     public name:string;
 4 
 5     // 2.構造函數
 6     // 構造函數在外部無法直接訪問
 7     // 只在實例化的時候才執行,且僅僅執行 1 次
 8     // 構造函數用於在實例化某對象時必須添加某屬性
9 // 本例:實例化People時必須添加姓名,否則報錯 10 constructor(name){ 11 this.name=name; 12 } 13 // 3.方法 14 sayname(){ 15 console.log(this.name); 16 } 17 } 18 19 /* 20 *使用new對類進行實例化 21 */ 22 let li=new People(‘li‘); 23 // 實例化 xiao 時沒有設置 name 屬性值,報錯 24 let xiao=new People(); 25 li.sayname();
26 27 28 29 class Stu{ 30 // 和上面例子對比可將 name 聲明直接移動至 constructor 內 31 constructor(public name:string,age:string){ 32 33 } 34 // constructor內添加 public/private/protected 對變量進行聲明後此處可用 this.name調用,否則不可調用 35 // age 沒有聲明所以無法調用 36 say(){ 37 console.log(this.name); 38 console.log(this
.age); 39 } 40 } 41 42 // 必須設置 name 屬性值 43 let chen=new Stu();

技術分享

構造函數要求實例化時必須設置name屬性值,沒有設置值具體報錯信息如下:

技術分享技術分享

繼承

在TypeScript裏,我們使用extends來創建子類。你可以看到HorseSnake類是基類Animal的子類,並且可以訪問其屬性和方法。

這個例子演示了如何在子類裏可以重寫父類的方法。 Snake類和Horse類都創建了move方法,重寫了從Animal繼承來的move方法,使得move方法根據不同的類而具有不同的功能。 註意,即使tom被聲明為Animal類型,因為它的值是Horsetom.move(34)調用Horse裏的重寫方法:

包含constructor函數的派生類必須調用super(),它會執行基類的構造方法。

super的用法說明:

1. 子類的構造函數必須調用父類的構造函數,就是這麽規定的
   constructor(name:string , sid:string){
        super(name);
  }

2. super.functonName( ) 可以調用父類的其它方法

 1 class Animal{
 2     public name:string;
 3 
 4     constructor(name:string){
 5         this.name = name;
 6     }
 7     move(distanceMetres:number = 0){
 8         console.log(`${this.name} moved ${distanceMetres}m`);
 9     }
10 }
11 
12 
13 class Snake extends Animal{
14     public age:string;
15     constructor(name:string,age:string){
16         super(name);
17         this.age=age;
18     }
19     move(distanceMetres=5){
20         console.log("snake...");
21         super.move(distanceMetres);
22     }
23     sayage(age){
24         alert(`${this.age}`);
25     }
26 }
27 
28 class Horse extends Animal{
29     constructor(name:string){
30         super(name);
31     }
32     move(distanceMetres=10){
33         console.log("horse...");
34         super.move(distanceMetres);
35     }
36 }
37 
38 let sam = new Snake(‘xiaobao‘,‘30‘);
39 let tom:Animal = new Horse(‘tommy‘);
40 
41 // sam.move();
42 sam.sayage(this.age);
43 // console.log(sam.age);
44 // tom.move(150);

《Typecript 入門教程》 1、類