typescript--類

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)

2 類的繼承

class Student extends Person{
     cardnumber:string;
     school:string;
     constructor(cardnumber:string,school:string){
            super("zhangsan",20)//執行父級的構造函數
            this.cardnumber = cardnumber;
            this.school=school
     }
     dohomework(){
         return this.name+"今年"+this.age+"歲,就讀於"+this.school+"編號"+this.cardnumber
    }
}
var stu1 = new Student("10001","北京大學")

3 訪問修飾符:(要明白用這個聲明,什麼時候可以訪問,什麼時候不可以訪問)
(1)public/private/protected
class Person{
     public name:string;
     private age:number; 

     protected email:string;
     constructor(name:string,age:number){
          this.name = name;
          this.age = age;

          this.email = mail;
     }
     print(){
         return this.name+":"+this.age
    }
}
var p = new Person("zhangsan",20)
console.log(p.name)

console.log(p.age)

console.log(p.email)

此時只有p.name可以訪問

(2)在繼承中

class student extends Person {

      show(){

            console.log(this.name,this.age,this.email)//此時this.age不能訪問

      }

}

public:任何地方可以訪問

private:私有的,只有自己可以訪問(例如爸爸與兒子,爸爸的私房錢是私有的,兒子不可以用)

protected:自己跟子類可以訪問(例如爸爸的房子,兒子也可以用)

4 靜態屬性和靜態方法

class Person{
    //實例屬性
    name:string;
    static age:number;//靜態屬性
    email:string;
    constructor(name:string,age:number,email:string){
        this.name = name;
        this.age = age;
        this.email = email;
    }
    //實例方法
    print(){
        return this.name+":"+this.age
    }
    //靜態方法
    static show(){
         console.log("show 方法")
    }
}
調用靜態方法:
Person.show();
//調用實例方法
var  p1 = new Person("zhangsan",22,"ss.qq.com")
console.log(p1.print())

5 多態

class Animal{
    eat(){
        console.log("animal eat")
    }
}
class Cat extends Animal{
    eat(){
        console.log("貓喫魚")
    }
}
class Dog extends Animal{
    eat(){
        console.log("狗喫肉")
    }
}
var c1 = new Cat();
c1.eat()

抽象類/抽象方法
(1)抽象類是提供其他類繼承的基類(父類),不能直接被實例
(2)抽象方法只能包含在抽象類中,抽象類中可以包含抽象方法和非抽象方法
(3)子類繼承抽象類,實現抽象方法
(4)定義

abstract class Animal{
    abstract eat();
    run (){
        console.log("run run run")
    }
}
class Cat extends Animal{
    eat(){
        console.log("貓喫魚")
    }
}
class Cat extends Animal{
    eat(){
        console.log("狗喫肉")
    }
}
var c1 = new Cat()
c1.eat()
var d1 = new Dog()
d1.eat()

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章