面向对象

51 阅读1分钟

核心概念

对象编程中的四个核心概念,这些概念是Encapsulation(封装)、Abstraction(抽象)、Inheritance(继承)、Polymorphism(多态)

为了解决以往传统的编程方式造成的函数间依赖性太强的问题,面向对象应运而生

简述

在面向对象编程中,我们将一组相关的变量(name, age)和函数(displayInfo)组合成一个单元,我们称该单元为对象(Dog),我们将这些变量称为属性,将函数称为方法

例子

使用 ES6 类语法的

class Dog {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }
  
  displayInfo() {
    console.log(`${this.name} ${this.age}`);
  }
}

const myDog = new Dog("Derrick", "10");
myDog.displayInfo(); // 输出: Derrick 10

封装

封装主要是将数据和方法包裹在对象内部,隐藏内部细节,只暴露必要接口。

在JS中,可以通过构造函数、类(ES6引入)、闭包等方式实现。私有属性的话,以前没有真正的私有,但ES6引入了#符号来定义私有字段,或者用闭包模拟。比如用IIFE创建私有变量,只能通过公共方法访问。

抽象

隐藏复杂逻辑,定义高层接口。

继承

子类复用父类的属性和方法,并可扩展新功能。 消除了冗余的代码

多态

面向对象中的多种形式