js面向对象 封装 继承 多态

面向对象得特点

      封装 继承 多态

(一)封装

       - 对象就是一个用来存储不同属性的容器

       - 对象不仅负责存储属性,还要负责数据的安全

       - 直接添加到对象中的属性,并不安全,因为它们可以被任意的修改

        - 如何确保数据的安全:

 1.私有属性化

        - 实例使用#就变成私有属性,私有属性只能在类内部访问

        - 私有属性要先声明

 2.提供setter和getter方法 进行访问和修改私有属性

        - 属性设置私有的好处,可以控制属性的读写权限

        - 可以在方法中,对属性的值进行验证

  3.封装主要用来保证数据的安全

  4.封装实现的方式

          1.属性私有化 加#

          2.通过getter和setter方法操作属性

  5.代码演示

class Person{
      #name
      #age
      constructor(name,age){
        this.#name = name
        this.#age = age
      }
      getName(){
        return this.#name
      }
      setName(name){
        this.#name = name
      }
      // 第二种方式
      get Age(){
        return this.#age
      }
      set Age(age){
        this.#age = age
      }
   }

   const p1 = new Person('xmm',12)
   console.log(p1.getName())
   console.log(p1.Age)
   p1.setName('hxxx')
   p1.Age = 18
   console.log(p1.getName())
   console.log(p1.Age)

打印之后

 二  多态

- 在js中不会检查参数的类型,所以这就意味着任何数据都可以作为参数传递

 - 要调用某个函数,无需指定的类型,只要对象满足某些条件即可

  - 多态让代码更灵活

三 继承

           - 可以通过extends关键来完成继承

           - 当一个类继承另一个类的时候,就相当于另一个类中的代码复制到了当前类中

           - 继承发生时,被继承的类成为父类(超类),继承的类称为子类

           - 通过继承可以在不修改一个类的前提对其进行扩展

           - 通过继承可以在不修改一个类的情况下对其进行扩展

代码实现

class Animal{
     constructor(name){
       this.name = name
     }
     sayhello(){
       console.log(this.name+'在叫')
     }
    }
    class Dog extends Animal{
      // 重写构造函数
      constructor(name,age){
        // 重写构造函数时,构造函数的第一行代码必须为super()
        super(name)
        this.age = age
      }
      // 在子类中可以通过创建同名方法来重新父类的方法
      sayhello(){
        super.sayhello // 在方法中可以使用super来引用父类的方法
        console.log(this.name+'在汪汪')
      }

    }
    class Cat extends Animal{
      sayhello(){
        console.log(this.name+'喵喵喵')
      }
      
    }
    const dog = new Dog('四毛')
    const cat = new Cat('木木')
    dog.sayhello()
    cat.sayhello()

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值