创建类
// 创建类,类名首字母大写,类名后面不需要加小括号
// constructon构造函数,只要类生成实例,就会自动调用构造函数,传递参数,并返回实例对象
class Star {
constructor(uname, age) {
this.uname = uname
this.age = age
}
}
创建实例对象
// 利用类创建对象,new不可省略,类名后面需要加小括号,构造函数不需要加function
let ldh = new Star('刘德华', 18)
let zxy = new Star('张学友', 20)
console.log(ldh)
console.log(zxy.uname)
console.log(Star)
类中添加共有方法
class Star {
constructor(uname, age) {
this.uname = uname
this.age = age
}
// 在类中添加共有方法,也就是函数,多个方法之间不需要加逗号
sing() {
console.log('我唱歌')
}
}
类的继承
继承:子类可以继承父类的属性和方法
-
expends
// 父类
class Father{
constructor(){
console.log('100')
}
}
// 子类:可以继承父类的属性和方法 extends
class Son extends Father {}
-
super:可以访问和调用父类的构造函数和普通函数
构造函数
class Son extends Father{
constructor(x,y){
// this.x=x
// this.y=y
// super(x,y)访问和调用父类的构造函数
super(x,y)
}
普通函数
// 访问和调用父类的普通函数super
class Father{
say(){
return '我是父亲'
}
}
class Son extends Father{
say(){
// console.log('我是儿子')
console.log(super.say()+'的儿子')
}
}
// 就近原则,先查找子类有没有该方法,如果有就用子类,如果没有,再查找父类
let son=new Son()
son.say()
子类继承父类函数,同时扩展自己的函数
// 子类继承父类方法,同时扩展自己的方法
class F {
constructor(x, y) {
this.x = x
this.y = y
}
sum() {
console.log(this.x + this.y)
}
}
class S extends F {
constructor(x, y) {
// 必须先调用父类的构造函数
super(x, y)
// 再指定自己的参数
this.x = x
this.y = y
}
minus() {
console.log(this.x - this.y)
}
}
let son = new S(100, 50)
son.minus()
son.sum()