class类是实例化对象的模板,可以批量创建对象

语法:定义类  class 类名(首字母大写){ 可以放属性(字段)、方法、构造函数 }

1、实例属性

使用类:const或let 对象:类型=new 类型

定义类时需要给属性初始化值,或者用?可选链操作符

// 定义类
class Person {
// 实例属性
// 语法:1.属性名(字段名):类型 = 值 2、属性名(字段名)?:类型
name:string='杨幂'
food?:string
}
//使用类 创建实例化对象
const ym:Person=new Person()
console.log(`name`, ym.name)
console.log(`food`,ym. food?.length)

步骤:定义一个类型

        New一个对象,里面是初始值,然后才可以访问

        ?是可选链操作符,可以有可以没有

        Ps:字符串也有长度,可以获取字符串的长度

//定义类
class Pig{
name:string='妮妮'
height?:number
weihgt:number=12
age:number=3
}
//new一个对象
let nini:Pig=newPig()
console.log('',nini.name)  //妮妮
console.log('',nini?.height) //undefined
console.log('',nini.weihgt) //12
console.log('',nini.age)  //3

2、构造函数

因为Class本身要有初始值,给一个构造函数 constructor(形参){  } ,自定义初始值,就不需要真实的赋值。

批量化赋值

class Person{
//实例属性
name:string
age:number

//构造函数 对实例属性赋值
constructor (name:string,age:number){
  this.name=name
  this.age=age
 }
}

// 实例化对象
const ym:Person=new Person('杨幂',36)
console.log('',y.name)
const yy:Person =new Person('杨洋',18)
console.log('',yy.name) 
constyz:Person = new Person('杨紫',32)
console.log('',yz.name)
const yd:Person=new Person('杨迪',36)
console.log('', yd.name)

New的作用:

1)创建一个空对象,2)执行构造函数,

3)在构造函数中将this指向新对象,4)返回新对象

class Dog{
name:string
age:number

constructor(name:string,age:number){
this.name=name
this.age=age
 }
}
const nini:Dog=new Dog('妮妮',3)  //括号不填是新对象没有值,class类没有初始值会报错
const kaka:Dog=new Dog('卡卡',10)
console.log('',nini.name)
console.log('',kaka.age)

3、实例方法

语法:自定义方法名(参数:类型【这里是形参】){ 业务处理,return是一种 }

class Students {
// 实例属性
name:string
age :number

constructor(name:string, age:number){
this.name = name
this.age = age  }

// 实例方法
// 语法:方法名(参数:类型,...):返回值类型{业务处理 }
// 返回值类型 可省略 内部可类型推断
study(content:string):string{
  return content
}
play(like:string){
console.log(`我叫${this.name},我喜欢玩${like}~`)
}

class Dog{
name:string
age:number

constructor(cname:string,cage:number){
this.name=cname
this.age=cage
}
//方法名也可以自定义
play(like:string){
return like}

const nini:Dog=new Dog('妮妮',3)
nini.play('','弹力球')   //调用方法,传参
console.log(`${nini.name}喜欢玩${nini.play('弹力球')})

4、静态属性、方法

实例化属性、方法和静态属性、方法的区别:

1)存储数据不同,实例->私有,静态->公共;

2)定义时,静态需要关键字static;

3)前者调用时需要实例化对象调用,静态要有类调用

5、继承类

类可以通过继承,快速获取另一个类的字段和方法

使用:先有父类,class 子类名 extends 父类名{ 属性、方法、构造函数 }

6、Super调用父类的函数

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

7、Instanceof检查实例化对象是否属于某个类

写法:实例对象 instanceof class  返回值是true或false

检查实例是否属于某个类

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐