1.类的定义
function Person1(name) {
this.name = name
this.print = function() {
console.log(this.name)
}
}
let p1 = new Person1("aaa")
p1.print()
class Person2 {
name:string
age:number
constructor(name:string,age:number) {
this.name = name
this.age = age
}
print() {
return this.name+":"+this.age
}
}
let p2 = new Person2("huangyi",18)
console.log(p2.print())
2.类的继承
class Student extends Person2 {
cardnumber:string
school:string
constructor(cardnumber:string,school:string,name:string,age:number) {
super(name,age)
this.cardnumber = cardnumber
this.school = school
}
msg() {
return this.name+"今年"+this.age+"岁,就读于"+this.school+",编号"+this.cardnumber
}
}
let stu1 = new Student("1001","xxx大学","huangyi",18)
console.log(stu1.msg())
3.接口的继承
interface Printer {
getmsg()
}
interface ColorPrinter extends Printer {
printing()
}
class HYPrinter implements ColorPrinter {
getmsg() {
console.log("HY1001")
}
printing() {
console.log("打印成功!")
}
}
let hy = new HYPrinter()
hy.getmsg()
hy.printing()
4.访问修饰符
class Person3 {
public name:string
private age:number
protected email:string
constructor(name:string,age:number,email:string) {
this.name = name
this.age = age
this.email = email
}
print() {
return this.name+":"+this.age+",邮箱为:"+this.email
}
}
let p3 = new Person3("huangyi",18,"hy123@qq.com")
console.log(p3.name)
console.log(p3.print())
class Student2 extends Person3 {
show() {
console.log(this.name)
console.log(this.email)
}
}
5.静态属性和静态方法
function Person4() {
this.name = "huangyi"
this.print = function(){}
}
Person4.age = 18
Person4.print1 = function(){}
Person4.print1()
let p4 = new Person4()
p4.print()
class Person5 {
name:string
age:number
static email:string
constructor(name:string,age:number,email:string) {
this.name = name
this.age = age
Person5.email = email
}
print() {
return this.name+":"+this.age +",邮箱为:"+Person5.email
}
static show() {
console.log("show()方法")
}
}
Person5.show()
let p5 = new Person5("huangyi",18,"123@qq.com")
console.log(p5.print())
6.多态
class Animal1 {
eat() {
console.log("animal1 eat")
}
}
class Cat1 extends Animal1 {
eat() {
console.log("猫吃鱼")
}
}
class Dog1 extends Animal1 {
eat() {
console.log("狗吃肉")
}
}
let cat = new Cat1()
cat.eat()
7.抽象类/抽象方法
abstract class Animal2 {
abstract eat()
run() {
console.log("run run run")
}
}
class Cat2 extends Animal2 {
eat() {
console.log("猫吃鱼")
}
}
class Dog2 extends Animal2 {
eat() {
console.log("狗吃肉")
}
}
let cat2 = new Cat2()
cat2.eat()
let dog2 = new Dog2()
dog2.eat()