面向对象编程
Es6中的类与对象
class声明,创建类,里面包含一个 constructor ,new的参数通过constructor来完成的!可以在里面直接添加方法,通过传参调用。
类的继承
1.
super可以访问和调用对象父类上的函数。可以调用父类的构造函数,也可以调用父类的普通函数
class Father {
constructor(x,y){
this.x = x;
this.y = y;
}
sum(){
console.log(this.x + this.y) //指向父类constructor
}
}
class Son extends Father {
constructor(x,y){
super(x,y); //调用了父类中的构造函数,然后把x,y传给父类就可以了
}
}
/**
* 实例化了子类 把子类1,5传给了constructor x,y,
又使用了super调用了父类的constructor,
把1,和5传给了父类中的constructor的x,y 就位1,5了
**/
var son = new Son(1,5)
son.sum();
2.
// super 关键字调用父类普通函数
class Father {
say(){
return ‘我是爸爸’;
// console.log(‘我是爸爸’);
}
}
/**
* super.say()就是调用父类的普通函数 say()这个函数
* 子类是可以调用父类的普通函数的,调的方法是 super.say()就可以了。
*
* 继承中的属性或者方法查找原则:就近原则
* > 如果子类没有,会去上查找父类,如果父类有没有,会提示你找不到这个方法
* **/
//就近原则输出,如果子类没有,会去上查找父类,如果父类有没有,会提示你找不到这个方法
class Son extends Father{
say(){
// console.log(‘我是儿子’);
console.log(super.say()+‘的儿子’);
}
}
var son = new Son();
son.say();
//父类有加法方法
class Father {
constructor(x,y){
this.x = x;
this.y = y;
}
sum(){
console.log(this.x + this.y)
}
}
// 子类继承父类加法方法,同时 扩展减法方法
class Son extends Father{
constructor (x,y){
//利用super 调用父类的构造函数
//super 必须在子类的this之前调用 强制性的要求 不会报错了
super(x, y);
this.x = x;
this.y = y;
}
//做减法操作的
subtract(){
//儿子独有的减法,extends Father又继承了父亲的加法
console.log(this.x - this.y);
}
}
var son = new Son(5,3)// 把5,3传给子类的constructor的 x , y
//把son的5,3传给子类的constructor
son.subtract();
son.sum()