开源 Arkts 鸿蒙应用 开发(三)Arkts语言的介绍

发布于:2025-06-21 ⋅ 阅读:(15) ⋅ 点赞:(0)

文章的目的为了记录使用Arkts 进行Harmony app 开发学习的经历。本职为嵌入式软件开发,公司安排开发app,临时学习,完成app的开发。开发流程和要点有些记忆模糊,赶紧记录,防止忘记。

 相关链接:

开源 Arkts 鸿蒙应用 开发(一)工程文件分析-CSDN博客

开源 Arkts 鸿蒙应用 开发(二)封装库.har制作和应用-CSDN博客

开源 Arkts 鸿蒙应用 开发(三)Arkts的介绍-CSDN博客

开源 Arkts 鸿蒙应用 开发(四)布局和常用控件-CSDN博客

开源 Arkts 鸿蒙应用 开发(五)控件组成和复杂控件-CSDN博客

 推荐链接:

开源 java android app 开发(一)开发环境的搭建-CSDN博客

开源 java android app 开发(二)工程文件结构-CSDN博客

开源 java android app 开发(三)GUI界面布局和常用组件-CSDN博客

开源 java android app 开发(四)GUI界面重要组件-CSDN博客

开源 java android app 开发(五)文件和数据库存储-CSDN博客

开源 java android app 开发(六)多媒体使用-CSDN博客

开源 java android app 开发(七)通讯之Tcp和Http-CSDN博客

开源 java android app 开发(八)通讯之Mqtt和Ble-CSDN博客

开源 java android app 开发(九)后台之线程和服务-CSDN博客

开源 java android app 开发(十)广播机制-CSDN博客

开源 java android app 开发(十一)调试、发布-CSDN博客

开源 java android app 开发(十二)封库.aar-CSDN博客

推荐链接:

开源C# .net mvc 开发(一)WEB搭建_c#部署web程序-CSDN博客

开源 C# .net mvc 开发(二)网站快速搭建_c#网站开发-CSDN博客

开源 C# .net mvc 开发(三)WEB内外网访问(VS发布、IIS配置网站、花生壳外网穿刺访问)_c# mvc 域名下不可訪問內網,內網下可以訪問域名-CSDN博客

开源 C# .net mvc 开发(四)工程结构、页面提交以及显示_c#工程结构-CSDN博客

开源 C# .net mvc 开发(五)常用代码快速开发_c# mvc开发-CSDN博客

本章节主要讲述鸿蒙开发中Arkts语言的介绍,这里主要讲一些特别和常用的语法和应用,旨在快速开发,详细的还是需要查看,官网文档中心

内容如下:

1.  声明,变量和常量以及各种不同类型的数据的声明。

2.  结构,主要的结构基本和其他语言相通

3.  .har的工程应用

一、声明,变量和常量以及各种不同类型的数据的声明

1.1  变量和常量

let hi: string = 'hello';
hi = 'hello, world';

const hello: string = 'hello';

1.2  number

number类型,和许多语言不同,任何整数和浮点数都可以被赋给此类型的变量。

数字字面量包括整数字面量和十进制浮点数字面量。

数字字面量包括整数字面量和十进制浮点数字面量。

整数字面量包括以下类别:

let n1 = 3.14;
let n2 = 3.141592;
let n3 = .5;
let n4 = 1e2;


function factorial(n: number): number {
  if (n <= 1) {
    return 1;
  }
  return n * factorial(n - 1);
}


factorial(n1)  //  7.660344000000002 
factorial(n2)  //  7.680640444893748 
factorial(n3)  //  1 
factorial(n4)  //  9.33262154439441e+157 

1.3  string

字符串字面量由单引号(')或双引号(")之间括起来的零个或多个字符组成。字符串字面量还有一特殊形式,是用反向单引号(`)括起来的模板字面量。

let s1 = 'Hello, world!\n';
let s2 = "this is a string";
let a = 'Success';
let s3 = `The result is ${a}`;

1.4  Object

Object类型是所有引用类型的基类型。任何值,包括基本类型的值,都可以直接被赋给Object类型的变量(基本类型值会被自动装箱)

let o1: Object = 'Alice';
let o2: Object = ['a','b'];
let o3: Object = 1;

1.5  Array

array类型,即数组,是由可赋值给数组声明中指定的元素类型的数据组成的对象

let names: string[] = ['Alice', 'Bob', 'Carol'];

二、结构

主要的结构和其他语言基本相通,比如if,switch,for,while等,不同的有For of,函数等。

2.1  For of

使用for-of语句可遍历数组、Set、Map、字符串等可迭代的类型

for (forVar of IterableExpression) {
  // process forVar
}

2.2  函数

function add(x: string, y: string): string {
  let z: string = `${x} ${y}`;
  return z;
}

2.3  函数重载

function foo(x: number): void;            /* 第一个函数定义 */
function foo(x: string): void;            /* 第二个函数定义 */
function foo(x: number | string): void {  /* 函数实现 */
}


foo(123);     //  OK,使用第一个定义
foo('aa'); // OK,使用第二个定义

三、类的使用

3.1  类的定义和使用

class Person {
  name: string = '';
  surname: string = '';
  constructor (n: string, sn: string) {
    this.name = n;
    this.surname = sn;
  }
  fullName(): string {
    return this.name + ' ' + this.surname;
  }
}


let p = new Person('John', 'Smith');
console.log(p.fullName());

构造函数

constructor ([parameters]) {
  // ...
}

如果未定义构造函数,则会自动创建具有空参数列表的默认构造函数

class Point {
  x: number = 0;
  y: number = 0;
}
let p = new Point();

3.2  类的继承

class Person {
  name: string = '';
  private _age = 0;
  get age(): number {
    return this._age;
  }
}
class Employee extends Person {
  salary: number = 0;
  calculateTaxes(): number {
    return this.salary * 0.42;
  }
}

父类的访问

关键字super可用于访问父类的实例字段、实例方法和构造函数。在实现子类功能时,可以通过该关键字从父类中获取所需接口:

class RectangleSize {
  protected height: number = 0;
  protected width: number = 0;


  constructor (h: number, w: number) {
    this.height = h;
    this.width = w;
  }


  draw() {
    /* 绘制边界 */
  }
}
class FilledRectangle extends RectangleSize {
  color = ''
  constructor (h: number, w: number, c: string) {
    super(h, w); // 父类构造函数的调用
    this.color = c;
  }


  draw() {
    super.draw(); // 父类方法的调用
    // super.height -可在此处使用
    /* 填充矩形 */
  }
}

3.3  接口

接口声明引入新类型。接口是定义代码协定的常见方式。

任何一个类的实例只要实现了特定接口,就可以通过该接口实现多态。

接口通常包含属性和方法的声明

// 接口:
interface AreaSize {
  calculateAreaSize(): number; // 方法的声明
  someMethod(): void;     // 方法的声明
}


// 实现:
class RectangleSize implements AreaSize {
  private width: number = 0;
  private height: number = 0;
  someMethod(): void {
    console.log('someMethod called');
  }
  calculateAreaSize(): number {
    this.someMethod(); // 调用另一个方法并返回结果
    return this.width * this.height;
  }
}


网站公告

今日签到

点亮在社区的每一天
去签到