//1、TS定义类
class Person{
name:string; //属性 前面省略了public
constructor(n:string){ //构造函数 实例化类的时候触发
this.name=n
}
run():void{
alert(this.name)
}
getName():string{
return this.name
}
setName(name:string):void{
this.name=name
}
}
var p=new Person('tommy')
p.run()
alert(p.getName()) //tommy
p.setName('Jerry')
alert(p.getName()) //Jerry
//2、TS中实现继承 extends super 关键字
class Animal{
name:string;
constructor(n:string){
this.name=n
}
type():string{
return `this is ${this.name}`
}
color():string{
return `${this.name} color is black`
}
}
// var dog=new Animal('dog')
// alert(dog.type()) //this is dog
//继承
class Cat extends Animal{
constructor(name:string){
super(name) //初始化父类构造函数
}
say(){
alert(`${this.name} say miao`)
}
}
var c=new Cat('cat') //可以执行父类方法和子类方法 如果子类父类有相同方法则执行子类方法
alert(c.type()) //this is cat
c.say()// cat say miao
alert(c.color()) //cat is black
//3、类的修饰符
// public 公有类型 类里面、子类、类外面都能访问
// protected 保护属性 类里面、子类里面可以访问,类外面不能访问
// private 私有属性 类里面可以访问,子类、类外面无法访问
//属性不加修饰符,默认public
//public
class Work{
public type:string;
constructor(t:string){
this.type=t
}
workTime():string{
return `${this.type}24小时` //类内部
}
}
class job extends Work{
constructor(type:string){
super(type)
}
work(){
alert(`我的工作是${this.type}`)//公共类型 子类能访问
}
}
let j=new job('程序员')
alert(j.type) //公共类型 类外部
let w=new Work('教师')
alert(w.workTime())//公共类型 类内部