Typescript中类,类的继承,以及修饰符(一)

class  类名{
    //属性
    属性名:类型;              //ts中必须给属性添加数据类型
    ...
    //构造方法
    constructor(形式参数名:类型){   //必须用构造函数给属性初始化值     
    								   //构造方法的作用
                                      //1.初始化参数 
                                      //2.创建对象                      
        this.属性 = 参数;      //this:当前这个类本身
    }
    //普通方法
    方法名(参数列表...){
    }
}
new 类名(实际参数) //实参传参类型必须对应构造函数

类的继承

class Car{
    lunzi:number;
    name:string;
    color:string;
    speed:number;
    constructor(lunzi:number,name:string,color:string,speed:number){
        this.lunzi=lunzi;
        this.name=name;
        this.color=color;
        this.speed=speed;
    }
    run(){
        console.log(this.name+"有"+this.lunzi+"个轮子,以"+this.speed+'km/h的速度,在高速公路上行驶')
    }
}
class Bike extends Car{         //Bike类继承Car类
}
class Tuolaji extends Car{     //拖拉机类继承Car类
    bing:string;
    liantiao:string;
    constructor(lunzi:number,name:string,color:string,speed:number,bing:string,liantiao:string,){
        super(lunzi,name,color,speed);     //注意super关键字
        		 this.bing=bing;		  //1,必须写在子类的构造方法的首行,
              this.liantiao=liantiao;     //2,调用父类的构造方法进行属性初始化
        								  //3,super.属性名; 调用父类的属性
        								  //4,super.方法名; 调用父类的方法 
    }
    run(){
     console.log('拖拉机在高速公路上行驶')   //方法重写:当父类的方法不满足子类的需求的时候重新写过
}	//注意:父类和子类的同名方法:除了方法体不同之外,其他都必须一样(方法名,参数个数,类型,返回值)							
}
let car=new Car(4,"福特野马","黑色",120);
car.run();
let bike=new Bike(2,"捷安特","红黑色",10);
bike.run();
let tuolaji=new Tuolaji(3,"红旗牌","红色",60,"手摇柄","链条");
tuolaji.run();

子类会继承父类的属性和方法(包括构造方法),(父类私有的属性和方法不能被继承)
继承可以多层次继承,不能多继承(你只能有一个父亲)
继承的关键字:extends

修饰符

  1. public----公共的,谁都可以访问,不声明修饰符默认为public

  2. protected----受保护的,访问:本类以及子类
    (这个相当于自己的儿子孙子后代,都能使用被protected修饰的方法和属性)

class Person {
    protected name: string;
    constructor(name: string) { 
        this.name = name; }
}

class Employee extends Person {
    private department: string;

    constructor(name: string, department: string) {
        super(name)
        this.department = department;
    }

    public getElevatorPitch() {
        return `你好, 我的名字是 ${this.name} 我的儿子是 ${this.department}.`;
    }
}

let howard = new Employee("海思", "麒麟");
console.log(howard.getElevatorPitch());
console.log(howard.name);//错误
  1. private ----私有的 表示只有自己(本类)可以使用,也不可以继承
    1, 私有的属性和方法只能在类中使用(方法被私有修饰符修饰的不多,属性被修饰的很多)
    2, 给被私有的修饰要获取属性 setter和getter 存取器
private age:number;
        set setAge(age:number){
            this.age = age;
        }
        get getAge():number{
            return this.age;
        }
        let p = new Person();
        p.setAge = 16;
        console.log(p.getAge );
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值