ts中的class类(批量创建对象)
//class类
class sayWords {
//创建两个变量(变量的值必须初始化,若没有初始化,需要在构造函数中为其赋值)
userName: string;
userSay: string;
//给变量赋值
constructor(userName: string, userSay: string) {
this.userName = userName;
this.userSay = userSay;
}userActive() {
console.log(`${this.userName}开始说话啦,他说${this.userSay}`)
}
}//创建对象并引用(实例化对象)
const s1 = new sayWords('tom', 'hello')//类成员的属性,都是实例属性,即实例化对象之后,当前实例对象中包含所有的类属性, 类成员方法,都是实例方法
console.log(s1.userName)
console.log(s1.userSay)
s1.userActive()
和js对象相比,js对象需要通过prototype的方式将对象方法绑定到他的原型上,ts类中函数直接写在class当中。(写法上的区别)
类的继承extends
//类的继承
class Dog{
name:string;
static sex:string;
constructor(name:string){
this.name = name
}
run(){
console.log(this.name)
}
}
class Husky extends Dog{
// 父类的构造函数所包含的参数,子类也必须包含,且子类必须含有super
constructor(name:string,age:number){
super(name)
//给属性赋值必须在super之后
this.age = 2
}
age:number
}
【ts中的class类(批量创建对象)】类成员修饰符
public 公共属性(默认修饰符)
private 私有属性 只能在类的本身被调用而不能在类的实例或者类的子类中调用
protect 保护属性 只能在类和其子类中被调用,不能在类的实例(new Dog())中被调用
readonly 只读属性 必须给该属性初始化并且不能更改
static 静态属性 static 静态属性 可以通过类来调用 Dog.sex,也可以通过子类去调用Husky.sex
//类的构造函数的属性,也可以给他添加修饰符
class Animal{
//相当于在当前类中声明了一个公共的name,name就变成了实例属性
// name:string;
constructor(public name:string){}
}
抽象类 abstract(只能被继承,而不能被实例化)
可以用来封装多个公用的函数,提高代码的复用性
abstract class AbCla{
eat(){
console.log('eat')
}
}
class AbChild extends AbCla{
name:string;
constructor(name:string){
super()
this.name = name
}
}let ab = new AbChild('hah')
ab.eat()
推荐阅读
- 热闹中的孤独
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 为什么你的路演总会超时()
- JS中的各种宽高度定义及其应用
- 我眼中的佛系经纪人
- 《魔法科高中的劣等生》第26卷(Invasion篇)发售
- Android中的AES加密-下
- 标签、语法规范、内联框架、超链接、CSS的编写位置、CSS语法、开发工具、块和内联、常用选择器、后代元素选择器、伪类、伪元素。
- 放下心中的偶像包袱吧
- C语言字符函数中的isalnum()和iscntrl()你都知道吗