TypeScript入門2:類、繼承、訪問修飾符

yub4by發表於2024-04-30
class Person {
  //例項屬性
  id: number;
  name: string;
  age: number = 18;
  
  //建構函式
  constructor(id: number, name: string) {
    this.id = id;
    this.name = name;
  }
  
  //例項方法
  introduce(): string {
    return `hello,I am ${this.name},and I am ${this.age} years old`
  }
}


//建立物件
let person1 = new Person(1,'zhangsan');

//物件及其屬性讀寫
console.log(person1);
console.log(person1.name); //讀
person1.name = 'lisi'; //寫
console.log(person1.name);

//例項方法呼叫
let intro = person1.introduce();
console.log(intro);


//靜態成員:Typescript 中的類中可以包含靜態成員(靜態屬性和靜態⽅法),靜態成員⾪屬於類本身,⽽不屬於某個物件例項。靜態成員通⽤⽤於定義⼀些常量,或者⼯具⽅法
class Constants{
  static count:number=1;
}
 
class Utils{
  static toLowerCase(str:string){
    return str.toLowerCase();
  }
}

//靜態成員⽆需透過物件例項訪問,直接透過類本身訪問即可
console.log(Constants.count);
console.log(Utils.toLowerCase('Hello World'));


// 繼承:⼦類可以直接使⽤⽗類的特性,並根據需要新增新的特性或覆蓋現有的特性。這種機制賦予⾯向物件程式良好的擴充套件性
class Student extends Person {
  classNumber: string;

  constructor(id: number, name: string, classNumber: string) {
    super(id, name);
    this.classNumber = classNumber;
  }

  introduce(): string {
    return super.introduce()+`, and I am a student`;
  }
}
  
let student = new Student(1,'xiaoming','三年⼆班');
console.log(student);
console.log(student.introduce());
/*
類的繼承需要使⽤關鍵字 extends
⼦類構造器中需使⽤ super() 調⽤⽗類構造器對繼承⾃⽗類的屬性進⾏初始化。
在⼦類中可以使⽤ this 關鍵字訪問繼承⾃⽗類的屬性和⽅法。
在⼦類中可以使⽤ super 關鍵字訪問⽗類定義的⽅法
*/


//訪問修飾符:訪問修飾符⽤於控制類成員(屬性、⽅法等)的可訪問性。TypeScript提供了三種訪問修飾符,分別是private、protected和public
/*
private 修飾的屬性或⽅法是私有的,只能在宣告它的類中的被訪問。
protected 修飾的屬性或⽅法是受保護的,只能在宣告它的類和其⼦類中被訪問。
public 修飾的屬性或⽅法是公有的,可以在任何地⽅被訪問到,預設所有的屬性和⽅法都是public 的。
*/
class Personnew {
  private id: number;
  protected name: string;
  public age: number;
 
  constructor(id: number, name: string, age: number) {
    this.id = id;
    this.name = name;
    this.age = age;
  }
}
 

相關文章