js中class类
// function Animal(name,color,done){
// this.name = name;
// this.color = color
// this.done = done
// }
// // 继承属性
// Animal.prototype.a = '继承静态属性'
// Animal.prototype.say = function(){
// return this.a
// }
// // 公共属性
// let cat = new Animal('毛','red',function(){
// console.log('aaaa');
// })
// let dog = new Animal()
// console.log(cat);
// console.log(cat.a);
// console.log(cat.say());
// console.log(dog.say());
// console.log(dog.name);
// private
// protected
// public
class a{
name = 'private'
getA(){
console.log('我是aclass 中静态方法');
console.log(this.name);
}
constructor(c){
this.c = c
}
}
class b extends a {
getB(){
console.log('b中state functon ');
// 2 调用父类中的 静态方法 不能获取静态属性
// super 相当于父类 a
console.log(super.getA());
// console.log(super.name,'-------------'); // 不能获取a
}
constructor(c){
// 1: 触发父类构造器
super(c) // super('c')
}
}
let d = new b('c')
console.log(d);
console.log(d.getB());
console.log(d.name);
ts中class 类 1
// 定义一个 Student类
class Student {
// 类中静态属性
// 将来实例化的对象都具备 name getName属性
a = 'name';
getName() {
return this.a
}
// 注意:指定构造器中 this.xx 类型 (key的类性)
eye:string;
bizi:string;
zuiba:string;
// constructor Student 构造器
// 1:形参赋值在Student类执行时,传入的实参
// 2 每个class类都有构造器
constructor(eye:string,bizi:string,zuiba:string){
// this 是 Student 实例的对象 blc/wwl
this.eye = eye;
this.bizi = bizi;
this.zuiba = zuiba
}
}
let blc = new Student('大眼睛','高鼻梁','小嘴');
console.log(blc);
console.log(blc.getName());
console.log(blc.eye);
let wwl = new Student('小眼睛','大鼻子','大嘴巴');
console.log(wwl);
console.log(wwl.getName());
console.log(wwl.eye);
// 类的继承
// extentds 继承
// 1 zy 类中将具有 Student 中的所有 属性
// 2 zy 创建的对象 中具有 Sudent和zy 中的属性
class zy extends Student {
age = 12;
getName() {
// super 相当于父类;super 一搬用来干什么呢? 一般用来调用父类的方法
return super.getName() + 'yan'
};
// 继承, 注意 子类中的constuctor 必须执行super
constructor(){
// super 触发父类中的构造器
super()
}
}
let wlj = new zy('aa','cc','cc')
console.log(wlj);
console.log(wlj.getName());
ts class 类 2
// 限制 class类中属性的访问权限:
// private 私有属性,允许在【自己类内】被调用
// protected 私有属性 允许在【自己类预计子类内部】调用
// public 公共属性,哪里都可以调用
// 以上 为 ts 中语法
class a {
private name = '123';
protected age(){
console.log('age');
}
public c = 45;
getName(){
// 类的内部 获取 类的属性
console.log(this.name);
console.log(this.age());
console.log(this.c);
return this.name
}
}
let zy = new a();
// console.log(zy.name); // bug
// console.log(zy.age()); // bug
console.log(zy.getName());
console.log(zy.c);
class b extends a{
num = 1;
getAage(){
// console.log(this.name); // roperty 'name' is private and only accessible within class 'a'
console.log(super.age());
console.log(this.c,'===================');
}
}
let blc = new b()
console.log(blc);
console.log(blc.getName());
// a 类的外币获取 name
// console.log(blc.name); // bug
// console.log(blc.age); // bug
console.log(blc.getAage());
console.log(blc.c);