鸿蒙中的类
Class 类
类是用于创建对象模板。同时类声明也会引入一个新类型,可定义其实例属性、方法 和 构造函数
类的基本语法
class 类名(){// 通常是首字母大小
// 1,实例的属性
// 2,构造函数
// 3, 方法
}
// 实例化对象
const p:类名 = new 类名()

类的属性方法
// 声明一个类。一般类名大写
class Person{
name:string = 'Tom' // 必须要有一个初始值。初始值有2中办法:1,直接像这样,在声明的时候就初始化。2.通过constructor来进行初始化
// ? 表示这个属性可有可无
likeArr?:string []
}
// 实例化对象
let p:Person = new Person()
console.log('姓名', p.name)
// ?. 是可选链操作符。与js一样
console.log('爱好', p.likeArr?.length) //爱好 undefined
通过构造函数 constructor 来进行初始化
// 声明一个类。一般类名大写
class Person{
name:string
age:number
// 初始化有2种,1,直接通过constructor来进行初始化,2.直接在声明的时候就初始化
constructor(name:string,age:number) {
this.name = name
this.age = age
}
}
let p:Person = new Person('张三', 20)
console.log('姓名', p.name)
定义类中的方法
// 声明一个类。一般类名大写
class Person{
name:string
age:number
// 初始化有2种,1,直接通过constructor来进行初始化,2.直接在声明的时候就初始化
constructor(name:string,age:number) {
this.name = name
this.age = age
}
// 这个sayHi方法,需要传递一个参数,表明你是谁
sayHi(yourName:string){
console.log('hi', yourName, '我是'+ this.name) // 这里的this是当前这个实例
}
}
let p:Person = new Person('张三', 20)
p.sayHi('李四')
Class 类中的静态属性和静态方法
Class 类中的静态属性和静态方法,通过static来修饰。被static修饰的属性和方法就是静态的。
访问静态属性和方法,需要通过类来进行访问。
如:类名.方法() ==> 调用静态方法
类名.属性 ====> 获取静态属性
声明静态属性,方法以及调用
// 声明一个类。一般类名大写
class Person{
// 静态属性,因为被static修饰过
static version:string = 'v1.0.0'
name:string
age:number
// 初始化有2种,1,直接通过constructor来进行初始化,2.直接在声明的时候就初始化
constructor(name:string,age:number) {
this.name = name
this.age = age
}
// 静态方法
static getRandom():number{
return Math.random() // [0,1)
}
}
// 调用静态方法
console.log('随机数', Person.getRandom())
// 方法静态属性
console.log('版本', Person.version)
继承 extends
类可以通过继承快速获取另外一个类的字段和方法
继承的基本语法如下:
class 父类{
// 字段
// 方法
// 构造函数
}
class 子类 extends 父类{
}
子类继承了方法
// 声明一个类。一般类名大写
class Person{
name:string
age:number
constructor(name:string, age:number) {
this.name = name
this.age = age
}
sayHi(){
console.log(`你好,我是${this.name}`)
}
}
class Son extends Person{
}
let s:Son = new Son("张三", 10)
s.sayHi()

子类重写了这个方法
// 声明一个类。一般类名大写
class Person{
name:string
age:number
constructor(name:string, age:number) {
this.name = name
this.age = age
}
sayHi(){
console.log(`你好,我是${this.name}`)
}
}
class Son extends Person{
//子类重写父类中的方法
sayHi(){
console.log('子类是重写了这个方法哈')
}
}
let s:Son = new Son("张三", 10)
s.sayHi()

子类通过 super 可以访问父类的实例字段、实例方法和构造函数

super 可以访问父类的构造函数
// 声明一个类。一般类名大写
class Person{
name:string
age:number
constructor(name:string, age:number) {
this.name = name
this.age = age
}
sayHi(){
console.log(`你好,我是${this.name}`)
}
}
class Son extends Person{
grade:number
// 这里其实是重写了父类的构造方法的哈
constructor(name:string, age:number, grade:number) {
// super必须在构造函数的最顶部(第一行)
super(name, age) //调用父类的构造函数
// 完成自己属性的初始化
this.grade = grade
}
//子类重写父类中的方法
sayHi(){
console.log('子类是重写了这个方法哈')
}
}
let s:Son = new Son("张三", 10, 89.5)
s.sayHi()
// 访问子类特有的属性
console.log('成绩是', s.grade)
instanceof 和 typeof
instanceof 运算符可以用来检测某个对象是否是某个类的实例
实例化子类并通过 instanceof 进行判断判断是否是某个类
判断数组是否为 Array 的实例
也就是说:引用数据类型使用 instanceof;语法: arr instanceof Array
基本数据类型使用:typeof; 语法:typeof 类型
console.log( typeof 11) 输出的是 number
遇见问题,这是你成长的机会,如果你能够解决,这就是收获。
作者:晚来南风晚相识
出处:https://www.cnblogs.com/IwishIcould/
本文版权归作者所有,欢迎转载,未经作者同意须保留此段声明,在文章页面明显位置给出原文连接
如果文中有什么错误,欢迎指出。以免更多的人被误导。
出处:https://www.cnblogs.com/IwishIcould/
想问问题,打赏了卑微的博主,求求你备注一下的扣扣或者微信;这样我好联系你;(っ•̀ω•́)っ✎⁾⁾!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,或者关注博主,在此感谢!
万水千山总是情,打赏5毛买辣条行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主(っ•̀ω•́)っ✎⁾⁾!
想问问题,打赏了卑微的博主,求求你备注一下的扣扣或者微信;这样我好联系你;(っ•̀ω•́)っ✎⁾⁾!
支付宝
微信
如果文中有什么错误,欢迎指出。以免更多的人被误导。

浙公网安备 33010602011771号