面向对象的三要素:
继承:子类继承父类。
封装:数据的权限和保密
多态:同一接口的不同实现
三要素-继承
class People { constructor(name, age) { this.name = name this.age = age } speak() { console.log("说") }}//子类继承父类class Student extends People { constructor(name, age, number) { // 继承自父类,包括父类的name和age super(name, age) this.number = number } study() { console.log("学习") }}// 创建实例let xiaobai = new Student("小白", 20, 201819)xiaobai.study()console.log(xiaobai.number)xiaobai.speak()
1.People 是父类,公共的
2.继承可以将公共的方法抽离出来,提高服用,减少冗余
三要素-封装
1. public 完全开放
2. protected 对子类开放
3. private 对自己开放
class People { name //public 完全开放 age //public 完全开放 protected weight //可以在子类获取,对子类开放 constructor(name, age) { this.name = name this.age = age this.weight = "120" } speak() { console.log("说") }}//子类继承父类class Student extends People { number private height //私有属性仅在当前类可访问 constructor(name, age, number) { // 继承自父类,包括父类的name和age super(name, age) this.number = number } study() { console.log("学习") console.log(this.weight) }}// 创建实例let xiaobai = new Student("小白", 20, 201819)xiaobai.study()console.log(xiaobai.number)xiaobai.speak()// console.log(xiaobai.weight) //错误// console.log(xiaobai.height) //错误// 在这里我们是获取不到 weight和height 的
1.减少耦合,不该外露的不外露
2.利于数据,接口的权限管理
3.ES6 目前不支持,一般认为 _开头的属性是 private
三要素-多态
同一个接口,不同的表现
保持子类的开放性和灵活性
面向接口编程
class People { constructor(name) { this.name = name } say() { }}class A extends People { constructor(name) { super(name) } say() { console.log("A") }}class B extends People { constructor(name) { super(name) } say() { console.log("B") }}
总结:
面向对象就是对数据和函数的的结构化编程,合理的结构化把代码简单化抽象化。
领取专属 10元无门槛券
私享最新 技术干货