• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

typescript类(类的定义、继承、修饰符、抽象类)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

代码:

// 本节内容
// 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,"[email protected]")
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,'[email protected]')
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()

.


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
vue2+typescript使用worker发布时间:2022-07-18
下一篇:
TypeScript入门-泛型发布时间:2022-07-18
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap