extends面向对象的三大特征封装 继承 多态

export

export class Pet{
    //访问修饰符   本类,本包 其他包,子类
    //pubilc  共有的 任何位置都可以访问
    public  id:number
    //default 默认值
    name:string
    private sex:string
    b(){
        console.log('默认');  
    }
    //私有的  只允许本类访问
    private a(){
        console.log('私有的');
    }
    constructor(id:number,name:string,sex:string){
       this.id=id
        this.name=name
        this.sex=sex
        }
    }

访问修饰符 本类,本包 其他包,子类

pubilc 共有的 任何位置都可以访问

default 默认值

private 私有的 只允许本类访问

getter/setter 提供一个共有的方法来访问属性

public getId():number{
        return this.id;
    }
    public getName():string{
        return this.name;
    }
    public getSex():string{
        return this.sex;
    }
    public getHelth():number{
        return this.helth;
    }
    public getLove():number{
        return this.love;
    }

set 设置/赋值

public setId(id:number){
        this.id=id
    }
    public setName(name:string){
        this.name=name
    }
    public setSex(sex:string){
        this.sex=sex
    }
    public sexHelth(helth:number){
        this.helth
    }
    public setLove(love:number){
        this.love=love
    }

继承 子类继承父类的属性和方法

1.继承的关键字 extends

class B extends A{
   //子类可以有自己的属性和方法
   b1:number
   b2:number
   b3() {
       console.log('b的函数');
       console.log(this.a1);
       console.log(this.a2);
       //子类无法继承父类的私有属性和方法
       //console.log(this.a3);
       //this.aa  
       this.bb()
   }
   //派生类的构造函数必须包含"super"调用
   constructor(a1:number,a2:number,a3:number,b1:number,b2:number){
    //super:调用父类的构造函数    必须写在构造函数的第一行
    super(a1,a2,a3)
    this.b1=b1
    this.b2=b2
   }
}
let ba:B=new B(1,2,3,4,5);
ba.bb()

2.子类继承父类 只能继承一个(单继承)

3.一个父类 可以有多个子类

class A{
    public a1:number
    a2:number
    private a3:number
    constructor(a1:number,a2:number,a3:number){
        this.a1=a1
        this.a2=a2
        this.a3=a3
    }
    public getA3():number{return this.a3}
    public setA3(a3:number){this.a3=a3}
    private aa(){
        console.log('私有方法'); 
    }
    public bb(){
        console.log('父类的公有方法'); 
    }
}
class B extends A{
   b1:number
   b2:number
   b3() {
       console.log('b的函数');
       console.log(this.a1);
       console.log(this.a2);
       this.bb()
   }
   constructor(a1:number,a2:number,a3:number,b1:number,b2:number){
    this.b1=b1
    this.b2=b2
   }
}
class C extends A{
   c1:number
   c2:number
   c3() {
       console.log('c的');
       console.log(this.a1);
       console.log(this.a2);  
       this.cc()
   }
   constructor(a1:number,a2:number,a3:number,b1:number,b2:number){
    super(a1,a2,a3)
    this.c1=c1
    this.c2=c2
   }
}

4.object 类是所有类的父类,没有显示继承的类都默认继承object

5.继承子类必须调用父类的构造函数,构造函数必须在第一行

6.子类不能继承父类的私有属性和方法

7.在子类中调用父类的属性和方法需要使用this关键字

8.子类属性和父类属性同名,默认使用子类的属性

9.方法同名时:可以同名,默认调用子类方法,可以使用super调用父类方法

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值