• typeScript学习笔记-03


    // 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('zhangsan',20)
    
    console.log(p.print())
    
    
    // 类的继承
    
    // class Student extends Person{
    //    cardnumber:string;
    //    school:string;
    //    dohmoework(){
    //        return  this.name+"今年"+this.age+"岁,就读于"+this.school+"学号"+this.cardnumber
    //    }
    // }
    
    // let stu=new Student('王笑',20)
    // stu.cardnumber="10"
    // stu.school="大学"
    // console.log(stu.dohmoework())
    
    class Student extends Person{
        cardnumber:string;
        school:string;
        constructor(cardnumber:string,school:string){
            super('马大哈',10);
            this.cardnumber=cardnumber;
            this.school=school;
        }
        print(){
            return  this.name+"今年"+this.age+"岁,就读于"+this.school+"学号"+this.cardnumber
        }
     }
     
     let stu=new Student('10','大学');
    
    console.log(stu.print())  //子类自己身上有的方法不会取父类身上找  马大哈今年10岁,就读于大学学号10
    
    // 接口的继承
    interface Printer1{
       getmsg1();
    }
    
    interface ColorPrinter extends Printer1{
        printing1()
    }
    
    class Hpprinter implements ColorPrinter{
        printing1(){
            console.log('打印成功')
        }
        getmsg1(){
            console.log('HP1020490')
        }
    }
    
    var hp=new Hpprinter()
    hp.getmsg1()
    hp.printing1()
    
    
    // 访问修饰符
    
    // public(公共的) private(私有的) protected(受保护的)
    
    class Person1{
        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 Person1('zhangsan',15,'142355@qq.com');
    console.log(P1.name);
    // console.log(P1.age) 因为age设置了 private私有属性所以访问会报错
    // console.log(P1.email)  因为email设置了受保护的属性,所以访问也会报错  只有它的子类可以访问
    
    class mStudent extends Person1{
        show(){
            console.log(this.email) //是Person1的子类所以可以访问email
        }
    } 
    
    // javascript的静态属性和静态方法
    
    function People(){
        // 实例属性
        this.name="zhangsan"
        // 实例方法
        this.print=function(){
    
        }
    }
    People.age=19 //静态属性
    // 静态方法
    People.print=function(){}
    People.print()//调用静态方法
    console.log(People.age)
    var p2=new People()
    p2.print()//调用实例方法
    
    
    class Person2{
        // 实例属性
        public name:string;
        static age:number;
        protected email:string
        constructor(name:string,age:number,email:string){
            this.name=name;
            this.email=email;
        }
        print(){
            return this.name+":"
        }
        // 静态方法
        static show(){
    
        }
    }
    // 调用静态方法
    Person2.show();
    var p3=new Person2('wangxiao',11,'@qq')
    console.log(p3.print())
    
    // 多态   同一个父类下边不同的子类可以有不同的实现
    class Animal{
        eat(){
            console.log('animal is eat')
        }
    }
    
    class Cat extends Animal{
        eat(){
            console.log('猫吃鱼')
        }
    }
    class Dog extends Animal{
        eat(){
            console.log('狗吃肉')
        }
    }
    
    var cat1=new Cat()
    cat1.eat();
    
    // 抽象类、抽象方法
    // 抽象类是提供其他类继承的基类(父类),不能直接被实例
    // 抽象方法只能包含在抽象类中,抽象类中可以包含抽象方法和非抽象方法
    // 子类继承抽象类,实现抽象方法
    
    // abstract 抽象类关键字
    abstract class Animal1{
        abstract eat();
        run(){
            console.log("run in run")
        }
    }
    
    
    class Cat1 extends Animal1{
       eat(){
           console.log('猫吃鱼1')
       }
    }
    
    class Dog1 extends Animal1{
        eat(){
            console.log('狗吃肉1')
        }
    }
    
    let c1=new Cat1();
    c1.eat();
    let d1=new Dog()
    d1.eat()
  • 相关阅读:
    CSS3媒体查询总结
    关于前端学习规划
    开发技术版本
    Visual Studio 问题汇总
    asp.net web core 开发问题汇总(1)
    asp.net web core 部署问题汇总
    报表平台需求文档(V0.0.0.1)
    Git使用说明
    派生类
    cin、cout的重载
  • 原文地址:https://www.cnblogs.com/h5it/p/13366230.html
Copyright © 2020-2023  润新知