es6的classes
构造方法:
class Student{
constructor (name,age){
this.name=name;
this.age=age;
}
run(){
console.log("我会跑");
}
}
let xs = new Student("宋泽",25);
console.log(xs);//打印:Student {name: "宋泽", age: 25}。
//constructor:实例化那些默认属性。
继承:
class Teacher extends Student{
constructor (name,age,sex){
super(name,age);
this.sex=sex;
}
eat(){
console.log(this.name+"is eating")
}
}
var ls = new Teacher("老师","30","男");
console.log(ls);//打印:Teacher {name: "老师", age: "30", sex: "男"}。
ls.eat();//打印:老师is eating。
//extends:继承。
//super:继承属性方法。
注释:在构造方法里的super是指反类的构造方法。
get,set,static:
class Student{
constructor (name,age){
this.name=name;
this.age=age;
}
run(){
console.log("我会跑");
}
get xm(){
return this.name+"123";
}
set xm(value){
this.name=value;
}
static shangxue (){
console.log("去读书");
}
}
let xs = new Student("宋泽",25);
console.log(xs.xm);
xs.xm="大胖";
console.log(xs.xm);
Student.shangxue();
//get:获取加赋值。
//set:设置。
//static:静态方法|类方法。
//set和get的方法名相同,而且可以同名
方法重载|方法覆盖:
class Student{
constructor (name,age){
this.name=name;
this.age=age;
}
run(){
console.log("我会跑");
}
}
let xs = new Student("宋泽",25);
class Teacher extends Student{
constructor (name,age,sex){
super(name,age);
this.sex=sex;
}
eat(){
console.log(this.name+"is eating")
}
run(){
super.run();
console.log("我一直在跑");
}
}
var ls = new Teacher("老师","30","男");
ls.run();//我会跑 我一直在跑;
注释:虽然子类继承了父类的run方法,但是子类会把父类的方法给覆盖掉,这个就是方法覆盖。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。