zoukankan      html  css  js  c++  java
  • typescript 类(类的定义、继承、修饰符、抽象类)

    代码:

    // 本节内容
    // 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()

    .

  • 相关阅读:
    SPOJ913 Query on a tree II
    SPOJ375 Query on a tree
    HDU4348 To the moon
    Bzoj2753 [SCOI2012]滑雪与时间胶囊
    HDU4612 Warm up
    Uva11374 Airport Express
    Uva1624 Knots
    DevExpress的GridControl的使用以及怎样添加列和绑定数据源
    C#中使用Path、Directory、Split、Substring实现对文件路径和文件名的常用操作实例
    ZedGraph的曲线的LineItem对象的Tag属性存储信息进而在鼠标悬浮时进行显示
  • 原文地址:https://www.cnblogs.com/crazycode2/p/10786738.html
Copyright © 2011-2022 走看看