//面向对象的三大特征:封装 继承 多态
// 封装:隐藏对象的属性对外只提供可以访问属性的方法
export class Pet{
//访问修饰符 本类,本包,其他包,子类
//public 共有的 任何位置都可以访问
public id:number
// default 默认
name:string
private sex:string
b(){
console.log('默认');
}
// 私有的 只允许本类访问
private a(){
console.log('私有');
}
constructor(id:number,name:string,sex:string){
this.id=id
this.name=name
this.sex=sex
}
}
class pets{
constructor(id:number,name:string,sex:string,helth:number,love:number){
this.id=id
this.name=name
this.sex=sex
this.helth=helth
this.love=love
}
// 1.私有化属性
private id:number
private name:string
private sex:string
private helth:number//健康值
private love:number//亲密度
//2.提供一个共有的方法来访问属性 getter/setter
public getId():number{
return this.id;
}
public getName():string{
return this.name;
}
public getSex():string{
return this.sex;
}
public getHelth():number{
return this.helth;
}
public getLove():number{
return this.love;
}
//set 设置/赋值
public setId(id:number){
this.id=id
}
public setName(name:string){
this.name=name
}
public setSex(sex:string){
this.sex=sex
}
public setHelth(helth:number){
this.helth=helth
}
public setLove(love:number){
this.love=love
}
}
let p:pets=new pets(1,'老黑','公',100,100);
// p.helth=99
p.setHelth(90)//调用函数修改属性的值
// 必须使用get函数访问属性
console.log(`序号:${p.getId()},昵称:${p.getName()}`);
// 人类 姓名,性别,身高,体重,年龄
//继承 子类继承父类的属性和方法、
class A{
public a1:number
a2:number
private a3:number
constructor(a1:number,a2:number,a3:number){
this.a1=a1
this.a2=a2
this.a3=a3
}
public getA3():number{return this.a3}
public setA3(a3:number){this.a3=a3}
private aa(){
console.log('私有方法');
}
public bb(){
console.log('父类的公有方法');
}
}
//子类
class B extends A{
//子类可以有自己的属性和方法
b1:number
b2:number
b3(){
console.log("b的函数");
console.log(this.a1);
console.log(this.a2);
// 子类无法继承父类的私有属性和方法
// console.log(this.a3);
// this.aa
this.bb
}
// 派生类的构造函数必须包含"super"调用
constructor(a1:number,a2:number,a3:number,b1:number,b2:number){
// 调用父类构造函数 必须写在构造函数的第一行
super(a1,a2,a3)
this.b1=b1
this.b2=b2
}
}
let ba:B=new B(1,2,3,4,5,);
ba.bb()
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/2401_83048001/article/details/141611900