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;
}
}