实例属性初始化
class Person {
age: number;
gender = "男";
// 等价于gender: string = "男";
constructor(age: number, gender: string) {
this.age = age;
this.gender = gender;
}
sayHi(ages) {
this.age = ages;
}
}
const p = new Person(18, "女");
p.sayHi(20);
类的继承
利用extends继承
class Animal {
sayHi() {
console.log("我是动物");
}
}
class Dog extends Animal {
say() {
console.log("我是狗");
}
}
const d = new Dog();
d.sayHi();
利用implements接口实现继承:Dog类中必须提供接口中指定的方法和属性
interface Animal {
say(): void;
name: string;
}
class Dog implements Animal {
name: string = "yoga";
say() {
console.log("我是狗");
}
}
const d = new Dog();
类中的可见性修饰符
public:共有的,这个是默认存在的,任何地方都可以访问
protected:受保护的,仅对所在类和子类的构造函数中访问,实例对象访问不行
private:私有的,当前类构造函数中可用,实例对象访问不行
readonly修饰符
class Person {
// 1:只能在cunstructor中赋值一次,其他地方不能赋值,可以有默认值
// 2:readonly 修饰的属性是只读的,只能修饰属性,不能修饰方法
// 3:属性后面需要加上类型注解,不加的会推断为字面量类型
// readonly name: string = "yoga";
readonly name = "yoga";
constructor(name: string) {
this.name = name;
}
}
const p = new Person("yoga");