//面向对象对的三大特征: 封装 继承 多态
//封装: 隐藏对象的属性对外只提供可以访问属性的方法
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 B extends A{
//子类可以有自己的属性和方法
b1:number
b2:number
bb(){
console.log(“b的函数”);
console.log(this.a1);
console.log(this.a2);
//子类无法继承父类的私有属性和方法
// console.log(this.a3);
//this.aa()
this.bb()
}
//派生类的构造必须包含"super"调用0
//1.继承的关键字 extends
//2.子类继承父亲 只能继承一个类(单继承)
//3.一个父亲 可以有多个字
//4.object 类是所有类的父类,没有显示继承的类都默认继承object
//5.子类必须调用父类的构造函数,构造函数必须在第一行
//6.子类不能继承父类的私有属性和方法
//7.在子类中调用父类的属性和方法需要使用this关键字
//8.子类属性和父类属性同名
//9.方法同名时:能不能同名?怎么调用?
//人{姓名,性别, 吃喝拉撒}子类 好人{肤色 做好事} 坏人{地区 做坏事}
private helth:number//健康值
private love:number//亲密度
//2.提供一个共有的方法来访问属性 getter/srtter
//私有的 只允许本类访问