面向对象
Posted 沿着路走到底
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象相关的知识,希望对你有一定的参考价值。
面向对象三要素:继承、封装、多态
- 继承,子类继承父类
- 封装,数据的权限和保密
- 多态,同一接口不同实现
概念 -- 类
// 类,即模板
class People
constructor(name, age)
this.name = name
this.age = age
eat()
alert(`$this.name eat something`)
speak()
alert(`My name is $this.name, age $this.age`)
// 创建实例
let zhang = new People('zhang', 20)
zhang.eat()
zhang.speak()
// 创建实例
let wang = new People('wang', 21)
wang.eat()
wang.speak()
三要素 -- 继承
- `People`是父类,公共的,不仅仅服务于`Student`
- 继承可将公共方法抽离出来,提高复用,极少冗余
// 父类
class People
constructor(name, age)
this.name = name
this.age = age
eat()
alert(`$this.name eat something`)
speak()
alert(`My name is $this.name, age $this.age`)
// 子类继承父类
class Student extends People
constructor(name, age, number)
super(name, age)
this.number = number
study()
alert(`$this.name study`)
let xiaoming = new Student('xiaoming', 10, 'A1')
xiaoming.study()
console.log(xiaoming.number)
let xiaohong = new Student('xiaohong', 11, 'A2')
xiaohong.study()
三要素 -- 封装
- 减少耦合,不该外露的不外露
- 利于数据、接口的权限管理
三要素 -- 多态
多态即执行同样的方法,不同对象会有不同表现。
保持子类的开放性和灵活性。
面向接口编程。
class People
constructor(name)
this.name = name
saySomething()
class A extends People
constructor(name)
super(name)
saySomething()
alert('I am A')
class B extends People
constructor(name)
super(name)
saySomething()
alert('I am B')
let a = new A('a')
a.saySomething()
let b = new B('b')
b.saySomething()
面向对象的意义:数据结构化
1
以上是关于面向对象的主要内容,如果未能解决你的问题,请参考以下文章