js class类的基本使用和继承

定义:类抽象了对象的公共部分,泛指某一大类,而对象特指某一个,通过类实例化的一个具体的对象。

创建与使用:

class A1{
constructor(name,age){
console.log('123')
this.a1 = name,
this.a2 =age
//属性
}
b(){console.log('方法',this.a1)}
//方法
}


let a = new A1(1,2)
//实例化类
console.log(a.a1)
//使用类属性
a.b()
//使用类方法

输出:
123
1
方法 1

constructor(){}里面的内容是 new完类 就会立即执行。所以会先输出123。

若想让b方法在类实例化后直接执行,则:constrctor(){this.b()} 即可

类的继承:

情况1:son继承了father的属性与方法,并定义了son自己的属性与方法,与father无冲突

class father{
constructor(a,b){
this.a = a,
this.b = b
}
c(){console.log('father的a',this.a)}
}

class son extends father{
constructor(e){
super(3,4)
this.e = e
}
f(){console.log('son的方法f')}
}

let x = son(5)
console.log(x.a)//father的属性a
console.log(x.b)//father的属性b
console.log(x.e)//son的属性e
x.c()//用father的方法c
x.f()//用son的方法f

输出:
3
4
5
father的a 3
son的方法f

son 继承了father的属性和方法,实例化后使用起来和son自己定义的属性和方法并无其他区别。

继承格式为:class 子类 extends 父类{ constructor(){ super() } }

情况2:son继承了father的属性与方法,并定义了son自己的属性与方法,但son的属性名与方法名和father的属性名与方法名重名了

class father{
constructor(a,b){
this.a = a,
this.b = b
}
c(){console.log('father的a',this.a)}
e(){console.log('father的e方法',this.a)}
}

class son extends father{
constructor(a){
super(3,4)
this.a = a
}
c(){console.log('son的方法f')}
}

let x = son(5)
console.log(x.a)//son的属性a
console.log(x.b)//father的属性b
x.c()//son的方法c
x.e()//father的方法e,本来输出的是father的属性a,但由于重名,所以输出的是son的a属性。
输出:
5
4
son的方法f
father的e方法 5

son继承了father的属性与方法后再自己定义一遍与father重名的属性与方法,那么下面在使用时,就会显示son定义的属性与方法。

当son与father发生命名冲突时,son的优先级永远是最高的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值