class的使用

//创建Person类
class Person {
	//构造器方法
	constructor(name,age){
		//构造器中this指向类的实例对象
		this.name = name
		this.age = age
	}
	speak(){
		//speak方法再类的原型对象上,供实例使用
		console.log(`我是${this.name},我今年${this.age}`)
	}
}
const p1 = new Person('张三',18)
const p2 = new Person('李四',19)
console.log(p1)
console.log(p1)
p1.speak()

//继承
//创建一个Student类,继承自Person类
class Student extends Person {
	constructor(name,age,grade){
		super(name,age)
		this.grade = grade
	}
	//重写继承自父类的方法
	speak(){
		//speak方法在Student类的原型链上
		console.log(`我是${this.name},我今年${this.age}岁,我上${this.grade}`)
	}
	study(){
		//study方法在原型对象上
		console.log(`我在学Class`)
	}
}

const s1 = new Student('张三',18,'三年级')
console.log(s1)
s1.speak()
s1.study()

static:静态属性

  • 使用静态属性无需创建实例,通过类即可直接使用
  • static只能通过直接获取,或者通过实例的constructor属性间接获取

readonly:只读属性

  • 如果在声明属性时添加一个readonly,则属性便成了只读属性无法修改

三种修饰符:

  • public(默认值):共有属性,可以在类、子类和对象中读取、修改
  • protected :保护属性,可以在类、子类中读取、修改
  • private :私有属性,可以在类中修改
class Person{
	
   	static name: string;       // 静态属性
   	readonly age: number;      // 只读属性
   	protected sex: '男'|'女';  // 保护属性
   	private _gender: string;   // 私有属性

   	constructor(name: string, age: number, sex:'男'|'女', gender: string){
      	this.name = name;
      	this.age = age;
      	this.sex = sex;
      	this._gender = gender;
   	}

   	get gender(){
      	return this._gender;
   	}

   	set gender(gender: string){
      	this._gender = gender;
   	}
}
class student{
   	constructor(name: string, age: number, sex:'男'|'女', gender: string){
      	super(name, age, sex, gender)
      	console.log(this.sex)    // 可以获取
      	console.log(this.gender) // 不可获取
   	}
}

const p1 = new Person('张三', 18, '男', '三年级');

console.log(Person.name,p1.constructor)   // static属性只能通过类或者实例的constructor访问
console.log(p1.age)           // readonly 只可读不可写
// console.log(p1.sex)        // protected 不可直接修改
// console.log(p1._gender)    // private 不可直接获取
// p1._gender = '李四'        // private 不可直接修改
console.log(p1.gender)       // 通过getter读取私有属性
p1.gender = '李四'           // 通过setter修改私有属性

抽象类

  • 抽象类是专门用来被其他类所继承的类,不能创建实例,只能被继承
  • 使用abstract开头的方法叫做抽象方法,抽象方法没有方法体只能定义在抽象类中,继承抽象类时抽象方法必须要实现
  • 抽象方法相当于多态(每个实例的该方法都由子类实现)
// 抽象类,不能创建实例,只能被继承
abstract class Animal{
	// 抽象方法,没有函数体
	// void 定义一个无返回值的方法
	abstract run(): void;
	bark(){
		console.log('动物在叫~');
	}	
}

class Dog extends Animals{
	run(){
		console.log('狗在跑~');
	}
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值