面向对象

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

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

面向面试编程代码片段之GC

PHP面向对象之选择工厂和更新工厂

Java中面向对象的三大特性之封装

python之路之前没搞明白4面向对象(封装)

Scala的面向对象与函数编程

Python面向对象学习之八,装饰器