三大特征一

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

// 封装:隐藏对象的属性对外只提供可以访问属性的方法

export class Pet{
    //访问修饰符  本类,本包,其他包,子类

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

    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

    }

}

class pets{
    constructor(id:number,name:string,sex:string,helth:number,love:number){
        this.id=id

        this.name=name

        this.sex=sex

        this.helth=helth

        this.love=love

    }

    // 1.私有化属性

    private id:number

    private name:string

    private sex:string

    private helth:number//健康值

    private love:number//亲密度

    //2.提供一个共有的方法来访问属性 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 setHelth(helth:number){
        this.helth=helth

    }

    public setLove(love:number){
        this.love=love

    }

}

let p:pets=new pets(1,'老黑','公',100,100);

// p.helth=99

p.setHelth(90)//调用函数修改属性的值

// 必须使用get函数访问属性

console.log(`序号:${p.getId()},昵称:${p.getName()}`);

// 人类   姓名,性别,身高,体重,年龄

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

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);

        // 子类无法继承父类的私有属性和方法

        // console.log(this.a3);

        // this.aa

        this.bb

    }

    // 派生类的构造函数必须包含"super"调用

    constructor(a1:number,a2:number,a3:number,b1:number,b2:number){
        // 调用父类构造函数   必须写在构造函数的第一行

        super(a1,a2,a3)

        this.b1=b1

        this.b2=b2

    }

}

let ba:B=new B(1,2,3,4,5,);

ba.bb()
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/2401_83048001/article/details/141611900

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值