類(lèi)的定義
class Person {
name:string; // 屬性 (剛寫(xiě)完會(huì)報(bào)錯(cuò)旁振,需要在構(gòu)造函數(shù)中執(zhí)行賦值)
constructor(n:string) {
this.name = n; //
}
run():void {
console.log(this.name + '正在跑')
}
}
let p = new Person('hyj');
console.log(p);
p.run();
類(lèi)的繼承
class People extends Person {
constructor(n:string) {
super(n); // 超類(lèi)
}
}
let peo = new People('hyj2');
console.log(peo)
類(lèi)的修飾符
typescript中定義屬性時(shí)提供的修飾符
class Person1 {
public name:string; // 共享
protected sex:string; // 保護(hù)
private age:number; // 私有
constructor(n:string, s:string, a:number) {
this.name = n;
this.sex = s;
this.age = a;
}
speakName():void {
console.log(this.name);
}
speakSex():void{
console.log(this.sex);
}
speakAge():void {
console.log(this.age)
}
}
class People1 extends Person1 {
constructor(n:string, s:string, a:number) {
super(n, s, a);
}
speakSex1():void{
console.log(this.sex);
}
speakAge1():void {
// console.log(this.age) // roperty 'age' is private and only accessible within class 'Person1'.
}
}
let p1 = new Person1('person', '男生', 18);
let peo1 = new People1('people1', '女生', 19);
public: 共享
在類(lèi)里面譬圣、子類(lèi)望侈、類(lèi)外面都可以訪(fǎng)問(wèn) (默認(rèn)共有public)
class Animal {
// 公共
public name:string;
constructor(n:string) {
this.name = n;
}
// 公共
public eat() {
// A
console.log(this.name, 'A')
}
}
class Dog extends Animal {
constructor(n:string) {
super(n);
}
// B
play() {
console.log(this.name, 'B')
}
}
// C
let kele = new Dog('可樂(lè)');
// A
kele.eat();
// B
kele.play();
// C
console.log(kele.name, 'C')
protected: 保護(hù)類(lèi)型
在類(lèi)里面琳彩、子類(lèi)里面可以訪(fǎng)問(wèn)秀菱、在類(lèi)外面無(wú)法訪(fǎng)問(wèn)
class Animal {
// 保護(hù)
protected name:string;
constructor(n:string) {
this.name = n;
}
// 公共
public eat() {
// A
console.log(this.name, 'A')
}
}
class Dog extends Animal {
constructor(n:string) {
super(n);
}
// B
play() {
console.log(this.name, 'B')
}
}
// C
let kele = new Dog('可樂(lè)');
// A
kele.eat();
// B
kele.play();
// C :編譯報(bào)錯(cuò) 屬性“name”受保護(hù)柿菩,只能在類(lèi)“Animal”及其子類(lèi)中訪(fǎng)問(wèn)戚嗅, 不能在類(lèi)外面訪(fǎng)問(wèn)
console.log(kele.name, 'C')
private:私有
在類(lèi)里面可以訪(fǎng)問(wèn),子類(lèi)枢舶、類(lèi)外面無(wú)法訪(fǎng)問(wèn)
lass Animal {
// 私有
private name:string;
constructor(n:string) {
this.name = n;
}
// 公共
public eat() {
// A 只能在當(dāng)前定義的這個(gè)類(lèi)里面使用
console.log(this.name, 'A')
}
}
class Dog extends Animal {
constructor(n:string) {
super(n);
}
// B
play() {
// 錯(cuò)誤 屬性“name”為私有屬性懦胞,只能在類(lèi)“Animal”中訪(fǎng)問(wèn),不能在子類(lèi)及類(lèi)外面訪(fǎng)問(wèn)
// console.log(this.name, 'B')
}
}
// C
let kele = new Dog('可樂(lè)');
// A
kele.eat();
// B
// kele.play();
// C : 屬性“name”為私有屬性凉泄,只能在類(lèi)“Animal”中訪(fǎng)問(wèn)躏尉, 不能在子類(lèi)及類(lèi)外面訪(fǎng)問(wèn)
// console.log(kele.name, 'C')