TypeScript类与继承
1.我理解的类
类可以理解成为一个模板,通过这个模板可以实例化某一个具体对象
比如说:我们定义一个动物类,
通过这个动物模板可以实例化成为猫或者其他具体的动物
2.类的基本使用
我们需要创建一个动物类;
这个动物有姓名、【默认值小可爱,字符串类型】
年龄、【默认值 20,数字类型】
性别、【字符串类型】
体重、【数字类型】
爱好【爱好可有可无,如果有必须是一个数组类型的】
这个动物类还有一个say的实例方法
下面我们就开始实现
class Animails {
name: string
age: number
gender: string
weight: string
likes?: Array<any>
//爱好这个属性可有可无,如果有必须是数组类型,需要给名称默认值小可爱、年龄默认值age=20
// 构造器直接对属性进行初始化
constructor(
name: string = '小可爱',
age: number = 20,
gender: string,
weight: string,
likes?: Array<any>
) {
// 初始化属性中的数据
this.name = name
this.age = age
this.gender = gender
this.weight=weight
}
// 定义实例方法
say() {
console.log(
`大家好我是${this.name},
今年${this.age}岁了,
性别:${this.gender},
体重:${this.weight},
`);
}
}
// 实例化对象
let pig = new Animails('猪猪侠', 10, '男', '30kg');
pig.say();//调用实例方法
3.实例化类的注意点
当类中的属性都有默认值时,
实例化对象的时候,可以不用进行进行初始化。
类中的属性如果没有默认值,不是可选属性。必须一一赋值(初始化)
就是说:我们必须对构造器中的属性进行一一赋值
除非构造器中有默认值
构造器中有默认值,实例化的时候可以不用一一赋值
class Animails {
name: string
age: number
constructor(
name: string = '小可爱',
age: number = 20,
) {
// 初始化属性中的数据
this.name = name
this.age = age
}
// 定义实例方法
say() {
console.log( `大家好我是${this.name}, 今年${this.age}岁了, `);
}
}
// 实例化对象
let pig = new Animails();
pig.say();//调用实例方法
4.类与类之间的继承
A类继承了B类,那么A类叫做子类;B类叫做基类
子类--->又叫派生类
基类--->又叫父类或者超类
下面这个例子我们将子类MySon将会去继承Father父类。
子类有属于自己的方法sonsay;
子类可以去调用父类的方法super.say('子类');
同时我们在子类中将会去重写父类的方法
// 我们定义了一个超类【父类】
class Father {
// 定义属性
name: string
age: number
// 定义构造函数
constructor(name: string, age: number) {
// 初始化属性中的数据
this.name = name
this.age = age
}
// 定义实例方法
say(str:string) {
console.log( `大家好我是${this.name}, 今年${this.age}岁了,${str}呼喊的我 `);
}
}
// 子类去继承了父类
class MySon extends Father {
// constructor中的参数必须要满足父类。
// 除非父类有默认参数或者父类中的属性不是必须属性。
constructor(name: string, age: number) {
// super调用父类中的构造函数
super(name,age)
}
// 子类中自己的实例方法
sonsay() {
console.log('我是子类哈哈');
//调用父类中的实例方法
super.say('子类');
}
// 重写父类的方法
say(name:string) {
console.log(`我重写了父类的方法我是${name}`)
}
}
// 进行实例化
let xiaoming = new MySon('小明', 19);
// 进行方法调用
xiaoming.sonsay();
xiaoming.say('小明');
遇见问题,这是你成长的机会,如果你能够解决,这就是收获。
作者:晚来南风晚相识
出处:https://www.cnblogs.com/IwishIcould/
本文版权归作者所有,欢迎转载,未经作者同意须保留此段声明,在文章页面明显位置给出原文连接
如果文中有什么错误,欢迎指出。以免更多的人被误导。
出处:https://www.cnblogs.com/IwishIcould/
想问问题,打赏了卑微的博主,求求你备注一下的扣扣或者微信;这样我好联系你;(っ•̀ω•́)っ✎⁾⁾!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,或者关注博主,在此感谢!
万水千山总是情,打赏5毛买辣条行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主(っ•̀ω•́)っ✎⁾⁾!
想问问题,打赏了卑微的博主,求求你备注一下的扣扣或者微信;这样我好联系你;(っ•̀ω•́)っ✎⁾⁾!

支付宝

微信
如果文中有什么错误,欢迎指出。以免更多的人被误导。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY