代码:

// 本节内容
// 1.类的定义
// 2.类的继承
// 3.访问修饰符
// 4.静态属性和静态方法
// 5.抽象类和多态 // js
// function Person(name) {
// this.name = name;
// this.print = function() {
// console.log(this.name)
// }
// }
// var p = new Person("aa")
// p.print() // ts 1.类的定义
class Person {
name:string;
age:number;
constructor(name:string, age:number){
this.name = name;
this.age = age;
}
print() {
return this.name + ":" + this.age
}
}
var p = new Person("张三",20)
console.log(p.print()) // 2.类的继承
class Student extends Person {
cardnumber:string;
school:string;
constructor(cardnumber:string, school:string){
super("zhangsan", 19)
this.cardnumber = cardnumber;
this.school = school
}
dohomework(){
return this.name + "今年" + this.age + "岁,就读于" + this.school + "编号" + this.cardnumber
}
}
// var stu1 = new Student("zhangsan",20)
// stu1.cardnumber = "1001"
// stu1.school = "北京大学" var stu1 = new Student("1001","北京大学")
console.log(stu1.dohomework()) // 接口的继承
interface Printer {
getmsg();
} interface ColorPrinter extends Printer {
printing();
} class HPPrinter implements ColorPrinter {
printing(){
console.log("打印成功")
}
getmsg(){
console.log("HP10011")
}
}
var hp = new HPPrinter()
hp.getmsg()
hp.printing() // 3.访问修饰符
// public / private /protected
class People {
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
}
} var p1 = new People("zhangsan",20,"111@qq.com")
console.log(p1.name)
// console.log(p1.age)
// console.log(p1.email)
class Teacher extends People {
show(){
console.log(this.name)
// console.log(this.age)
console.log(this.email)
}
} // 4.静态属性和静态方法
// function Boss() {
// // 实例属性
// this.name = "zhangsan";
// // 实例方法
// this.print = function(){}
// }
// // 静态属性
// Boss.age = 19
// // 静态方法
// Boss.show = function() {}
// // 调用静态方法
// Boss.show()
// // 调用静态属性
// console.log(Boss.age)
// // 调用实例方法和属性
// var boss = new Boss()
// boss.print()
// console.log(boss.name) // ts
class Boss {
// 实例属性
name:string;
age:number;
// 静态属性
static email:string;
constructor(name:string,age:number,email:string){
this.name = name;
this.age = age;
Boss.email = email;
}
// 实例方法
print(){
return this.name + ":" + this.age
}
// 静态方法
static show(){
console.log("show 方法")
}
}
// 调用静态方法
Boss.show()
// 嗲用实例方法
var boss = new Boss("zhangsan",22,'111@qq.com')
console.log(boss.print())
// 注:不依赖于类的方法,可以为静态方法 // 5.多态(同一个父类,不同的子类,有不同的实现)
class Animal {
eat() {
console.log("animal eat")
}
}
class Cat extends Animal {
eat() {
console.log("猫吃鱼")
}
}
class Dog extends Animal {
eat() {
console.log("狗吃肉")
}
}
var c = new Cat()
c.eat()
var d = new Dog()
d.eat() // 6.抽象类/抽象方法
// 6.1 抽象类是提供其他类继承的基类(父类),不能直接被实例
// 6.2 抽象方法只能包含在抽象类中,抽象类中可以包含抽象方法和非抽象方法
// 6.3 子类继承抽象类,实现抽象方法 // 定义抽象类
abstract class Beast {
// 定义抽象方法(抽象方法没有具体的方法体)
abstract eat();
run(){
console.log("run run run")
}
} class Tiger extends Beast {
eat() {
console.log("天王盖地虎")
}
} var t = new Tiger()
t.eat()

.

05-11 21:54