Android 学习 鸿蒙HarmonyOS 4.0 第七章(TS中的类和对象,类继承)

PS:在有关TS的博客中呢,我想声明一点,如果是零基础没有开发经验的小伙伴,直接学鸿蒙会有些吃力,可以先学一下TS,比较好入手一些,鸿蒙主推的开发语音是ArkTS,是TS的超集,先学习和了解TS,更方便更快捷的能够学会ArkTS。

类:

TypeScript支持基于类的面向对象的编程方式,定义类的关键字为class,后面紧跟类名,类描述了所创建的对象共同的属性和方法。

例子:

javascript 复制代码
//定义一个person类
class Person{
    private name:string    //定义两个私有属性的name和age
    private age:number
    
    //定义构造函数(方法)
    constructor(name:string,age:number){
        this.name = name
        this.age = age
    }


    //定义一个公共的成员函数
    public getPersonInfo():string{
        return `我的名字是:${this.name},年龄是:${this.age}`
    }
}

解读:
1:创建/定义一个类 需要class关键字
2:定义构造函数 需使用关键字:constructor 不可少
3:可以定义私有属性 需关键字 private 也可以公共属性:public
4:定义成员函数,可以公共使用public 也可以私有 private

创建完类之后,调用

javascript 复制代码
//构造Person类的实例
let p = new Person("张三",18)

//p 就是person的实例

//调用Person类中的公共方法,因为是public修饰的方法,所以可以直接通过实例.方法名调用。
console.log(p.getPersonInfo())

类继承:继承就是子类继承父类的特征(属性)和行为(函数/方法),使子类具有父类的相同行为(相同的方法),TypeScript中运行使用继承来扩展现有的类。关键字:extends。

案例:

ps:上面的person类当做父类,新写一个Employee类来继承person类。

javascript 复制代码
//创建Employee 类 继承 Person类
class Employee extends Person{
    //子类可以有自己的属性
    private department:string;

    //构造函数  参数name 和 age 都是父类person中继承的
    constructor(name:string,age:number,department:string):string{
        // this.name = name  error 错误的,this.代表本类,name是父类的,所以不能这么写
        super(name,age)     //正确写法 
        this.department = department
    }

    //定义一个employee的公共方法
    public getEmpInfo():string{
        return this.getPersonInfo() + `,我的部门是:${this.department}`
    }
}

//使用:
let emp = new Employee('王五',33,"技术部")
console.log(emp.getPersonInfo())
console.log(emp.getEmpInfo())




//解读:
1:定义一个Employee 类 并通过关键字:extends 继承 Person类。
2:因为Employee 虽然是一个子类,但是它也可以有自己的属性变量  private department:string;
3:创建构造函数 关键字不能少:constructor
4:构造函数中,如果想用父类Person中的属性变量,不能通过this.的方式,要用super('父类属性名')的
   方式去使用。
5:使用过程中,需要通过new关键字来获取实例,获取到实例后,可以通过实例.方法名的方式进行调用,
   如果父类中的方法是公共的,子类的实例也可以调用父类的这个公共方法,因为子类继承父类可以直接
   调用父类的公共方法。

下一章:

Android 学习 鸿蒙HarmonyOS 4.0 第八章(TS中的可迭代对象)

相关推荐
别动我齐刘海2 小时前
Linux 系统调试学习2
linux·运维·c++·人工智能·学习·机器学习·机器人
懿路向前2 小时前
HarmonyOS 粒子特效实战:emitter.size 是双刃剑:粒子精确定位 [0,0] 与条带随机出生(HarmonyOS)
华为·harmonyos
马剑威(威哥爱编程)2 小时前
【共创稿事节】HarmonyOS 7 Agent 开发实战 04:云端 RAG 搭企业私有知识库问答
人工智能·华为·harmonyos
m4Rk_2 小时前
【论文阅读】Agent 记忆机制(99):PrisMem——从整体分数搜索走向能力驱动的记忆自进化
论文阅读·人工智能·学习·开源·github
贾伟康3 小时前
【晨迹相机|20】HarmonyOS ArkTS AppGallery 发布复查实战:核对包名、版本、设备、素材和离线声明
harmonyos·arkts·appgallery·发布审核·上架复查
特立独行的猫a3 小时前
用仓颉写桌面应用:从 npx 建工程到串口实时示波器
开源·harmonyos·tauri·仓颉·cj-tarui
PC2005-cloud3 小时前
Mysql学习笔记:InnoDB Cluster 集群从零搭建实战,基于 Docker 实现高可用读写分离架构
笔记·学习·mysql
小陈phd4 小时前
深入理解agent学习笔记(七)——动态提示词与Skills
笔记·学习
我命由我123454 小时前
田野笔记极简理解
经验分享·笔记·学习·职场和发展·求职招聘·职场发展·学习方法
一木 之林4 小时前
微信小程序开发全攻略·文章版|00 总览:74集学习路径与知识地图
人工智能·学习·计算机视觉·微信小程序·小程序