类的定义与继承
class Person {
name = "steven";
getName() {
return this.name;
}
}
const person = new Person();
console.log(person.getName());
class Teacher extends Person {
getTeacher() {
return "teacher";
}
}
const teacher = new Teacher();
console.log(teacher.getName());
console.log(teacher.getTeacher());
class Teacher1 extends Person {
getName() {
return "new name";
}
getTeacher() {
return "teacher1";
}
}
const teacher1 = new Teacher1();
console.log(teacher1.getName());
class Teacher2 extends Person {
getName() {
return super.getName() + "New name";
}
}
const teacher2 = new Teacher2();
console.log(teacher2.getName());
类中的访问类型和构造器
class Person {
public name: string;
private age: number;
protected sex: string;
public sayHi() {
this.name;
this.age;
this.sex;
console.log("hi");
}
}
const person = new Person();
person.name = "steven";
console.log(person.name);
person.sayHi();
person.age = 18;
person.sex = "male";
class Teacher extends Person {
public sayBye() {
this.name;
this.age;
this.sex;
}
}
class Person {
constructor(public name: string) {}
}
const person = new Person("steven");
console.log(person.name);
class Teacher extends Person {
constructor(public age: number) {
super("steven");
}
}
const teacher = new Teacher(28);
console.log(teacher.age);
console.log(teacher.name);
getter 和 setter
class Person {
constructor(private _name: string) {}
get name() {
return this._name + " lee";
}
set name(name: string) {
const realName = name.split(" ")[0];
this._name = realName;
}
}
const person = new Person("steven");
console.log(person.name);
person.name = "steven lee";
console.log(person.name);
class Demo {
private static instance: Demo;
private constructor(public name: string) {}
static getInstance() {
if (!this.instance) {
this.instance = new Demo("steven");
}
return this.instance;
}
}
const demo1 = Demo.getInstance();
const demo2 = Demo.getInstance();
抽象类
class Person {
public readonly name: string;
constructor(name: string) {
this.name = name;
}
}
const person = new Person("steven");
console.log(person.name);
abstract class Geom {
width: string;
getType() {
return "Geom";
}
abstract getArea(): number;
}
class Circle extends Geom {
getArea() {
return 100;
}
}
class Square extends Geom {
getArea() {
return 200;
}
}