JavaScript面向对象,class关键字,继承,super关键字

Posted 别Null.了

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript面向对象,class关键字,继承,super关键字相关的知识,希望对你有一定的参考价值。

目录

面向对象概述

面向过程

面向对象

ES6面向对象语法 

类和对象

类的基本语法

class关键字

继承

方法覆盖

super关键字

静态成员和实例成员


面向对象概述

面向过程

面向过程:面向过程就是分析出解决问题的步骤,然后用函数把这些步骤一个个实现,使用的时候一次调用。面向过程的核心是过程

面向对象

面向对象:面向对象就是把需要解决的问题分解成一个个对象,建立对象 不是为了实现一个步骤,而是为了描述每个对象在解决问题中的行为,面向对象的核心是对象

优势:模块化更深,封装性强

           更容易实现复杂的业务逻辑。

           更易维护、易复用、易扩展。

特征:

封装性:封装性包括属性的封装,方法的封装,类的封装,组件的封装

多态性:多态性是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。

继承性:继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。

              在类层次中,子类只继承一个父类的数据结构和方法,则称为单重继承

              在类层次中,子类继承了多个父类的数据结构和方法,则称为多重继承

面向对象的特性可以用下图解释:

ES6面向对象语法 

ES6, 全称 ECMAScript 6.0

类和对象

:事物分为具体的事物和抽象的事物,当我们脑中出现“书”这个词的时候,就可以大致想象到书的基本样貌特征,这个过程就是抽象,抽象出来的结果,就是类。

可以用class关键字声明一个类(字母大写),之后以这个类来实例化对象。

对象:当我们拿起手里的一本真实存在的书的时候,这本书有自己的书名、作者、页数等信息,像这种具体的事物就是对象。

类和对象的区别:

1) 类抽象了对象的公共部分,它泛指某一大类(class)

2) 对象特指某一个,通过类实例化一个具体的对象 

3) 类必须使用new实例化对象

4) 创建类和创建对象的方法不同:

创建类:class Name { }

创建对象:var xx = new Name()

类的基本语法

class关键字

用来定义一个类,在类中可以定义constructor()构造方法,用来初始化对象的成员。

//定义类
class Person{
   constructor(name){
      this.name = name;
   }
}
//使用类创建对象
var p1 = new Person('张三')	//创建p1对象
var p2 = new Person('李四')	//创建p2对象
console.log(p1.name);       //访问p1对象的name属性
console.log(p2.name);       //访问p2对象的name属性

//输出:张三  李四

 类中的方法

class Person{
   constructor(name) {this.name = name;}
   say(){	    // 在类中定义一个say()方法
      console.log('你好,我叫' + this.name)
   }
}
var p1 = new Person('张三')
p1.say()	  // 输出结果:你好,我叫张三

继承

javascript中,继承用来表示两个类之间的关系,子类可以继承父类的一些属性和方法,在继承以后还可以增加自己独有的属性和方法。

// 先创建一个父类(基类或超类)
class Father{
   constructor() {}
   money(){
      console.log(100)
   }
}
// 子类继承父类,Son是子类(又称为派生类)
class Son extends Father {}
//创建子类对象
var son = new Son()
son.money()
//输出结果:100

方法覆盖

 若子类中定义的函数与父类中的函数同名时,父类的函数就覆盖了父类中函数。

super关键字

super关键字用于访问和调用对象在父类上的方法,可以调用父类的构造方法,也可以调用父类的普通方法。(代表当前类的父类)

注意:A、调用父类的构造函数:在子类的构造函数中使用super调用父类的构造函数,则调用语句必须作为子类构造函数的第一条语句       super([参数])
           B、子类不能继承父类的构造函数
           C、调用普通函数:  super.函数名([参数])

例子:通过super关键字调用对象在父类上的构造方法

class Father{   //定义父类
    constructor(x, y){   //constructor构造方法
       this.y = y;
    }
    sum(){
       console.log(this.x + this.y)
    }
}
class Son extends Father{   //定义子类
    constructor(x, y){
        super(x, y);       //通过super关键字调用对象在父类上的构造方法
    }
}
var son = new Son(1,2)
son.sum()       //输出结果:3

例子:通过super关键字调用父类的普通方法

class Father{
    say(){
       return '我是父类'
    }
}
class Son extends Father{
    say(){
       console.log(super.say() + '的子类')   //super调用父类的普通方法
    }
}
var son = new Son(1, 2)
son.say();       // 输出结果:我是父类的子类

以上是关于JavaScript面向对象,class关键字,继承,super关键字的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript面向对象

继 承(面向对象特征之一)

Javascript面向对象编程

JavaScript 面向对象的介绍

JavaScript设计模式阅读随笔——JavaScript面向对象

JavaScript 面向对象快速掌握知识点