主题
类
class类
ts
class Person {
name: string = '小郑'
age = 18
static sex: number = 1
// 只读属性 => 无法修改
readonly password: number = 123456
// 静态只读属性
static readonly password2: number = 123456
// 实例方法
sayHi() {
console.log('hi');
}
// 静态方法
static sayHi() {
console.log('hhh');
}
}
const person = new Person()
console.log(person);
person.name = '修改了...';
console.log(person.name);
// person.password = 666;
console.log(person.password);
// console.log(person.sex);
console.log(Person.password2);
console.log(person.sayHi);
console.log(Person.sayHi);
构造函数和this
ts
class User {
name: string
age: number
// 构造函数,对象创建时调用
constructor(name: string, age: number) {
console.log("xx:", this);
this.name = name
this.age = age
}
sayHi() {
console.log("hi");
}
}
const user = new User('小郑', 18)
user.sayHi()
console.log(user);
继承
ts
// (function () {
class Animal {
name: string
age: number
constructor(name: string, age: number) {
this.name = name
this.age = age
}
sayHi() {
console.log("hi");
}
}
class Dog extends Animal {
sayHi() {
console.log("hi dog ...");
}
eat() {
console.log("eat dog ...");
}
}
const dog = new Dog('小狗', 18)
dog.sayHi()
dog.eat()
console.log(dog);
// })
super
ts
class P {
name: string
age: number
constructor(name: string, age: number) {
this.name = name
this.age = age
}
sayHi() {
console.log("hi");
}
}
class UserA extends P {
// 子类构造函数中需要调用super
constructor(name: string, age: number) {
super(name, age)
this.name = name
this.age = age
}
sayHi() {
super.sayHi()
console.log("hi userA ...");
}
}
const userA = new UserA('小郑', 18)
userA.sayHi()
console.log(userA);
抽象类
ts
// 抽象类,无法new
abstract class AbsParent {
name: string
age: number
constructor(name: string, age: number) {
this.name = name
this.age = age
}
// 抽象方法
abstract sayHi(): void
}
class AbsChild extends AbsParent {
sayHi() {
console.log("hi child ...");
}
}
const absChild = new AbsChild('小郑', 18)
absChild.sayHi()
属性封装
ts
class User {
// 公共属性
public _name: string
// 私有属性
private _age: number
// 当前类和子类才能访问
// protected _sex: number
constructor(name: string, age: number) {
this._name = name
this._age = age
}
// setAge(age: number) {
// this._age = age
// }
// getAge() {
// return this._age
// }
get age() {
return this.age
}
set age(age: number) {
this._age = age
}
}
const user = new User('小郑', 18)
user._name = 'hhh'
// user.setAge(11)
user.age = 11
console.log(user);
class Simple {
constructor(public name: string) { }
}
const s = new Simple('hhh')
console.log(s);