<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>extends继承</title>
</head>
<body>
<script type="text/javascript">
// 定义子类时,使用extends关键字 继承父类
// 不需要实例化父类
//父类
class A{
constructor(){
this.age = 30;
}
say(){
console.log('我是A中的实例方法say');
}
static coding(){
console.log('我是A中的静态方法coding');
}
}
//子类
class B extends A{
//子类构造方法
constructor(){
//函数形式的super() 表示调用父类的构造方法
//如果子类定义了构造方法(使用了this),必须先调用super()
super();
this.sex = '保密';
}
//super.方法() 写法,如果当前方法是实例方法,则调用父类的实例方法
//如果当前方法是静态方法,则调用父类的静态方法
//同名的实例方法,子类会覆盖父类
say(){
//如果需要同时执行父类的方法
//需要使用super.父类方法(); 调用
super.say();
console.log('我是B中的实例方法say');
}
//同名的静态方法,子类会覆盖父类
//
static coding(){
//如果需要同时执行父类的方法
//需要使用super.父类方法(); 调用
// super.coding();
console.log('我是B中的静态方法coding');
}
}
//实例化子类得到子对象
var obj = new B();
obj.say();
console.log(obj.age)
//调用静态方法
B.coding();
//单继承: 一个类只能继承一个类
//但是可以子类继承父类,父类再继承另一个类
// //子类
// class C extends B{
// }
// //实例化子类得到子对象
// var obj2 = new C();
// obj2.say();
</script>
</body>
</html>