【JavaScript】21_面向对象继承

举报
魔天伦 发表于 2023/02/24 18:20:48 2023/02/24
【摘要】 8、继承可以通过extends关键来完成继承时,就相当于将另一个类中的代码复制到了当前类中(简单理解)继承发生时,被继承的类称为 父类(超类),继承的类称为 子类的代码,并且可以在不修改一个类的前提对其进行扩展​ 封装 —— 安全性​ 继承 —— 扩展性​ 多态 —— 灵活性 <script> ...

8、继承

  • 可以通过extends关键来完成继承
    时,就相当于将另一个类中的代码复制到了当前类中(简单理解)
  • 继承发生时,被继承的类称为 父类(超类),继承的类称为 子类
    的代码,并且可以在不修改一个类的前提对其进行扩展

​ 封装 —— 安全性
​ 继承 —— 扩展性
​ 多态 —— 灵活性

    <script>
        class Animal{
            constructor(name){
                this.name = name;
            }

            sayHello(){
                console.log('动物在叫')
            }
        }

        class Dog extends Animal{

        }

        class Cat extends Animal{

        }

        class Snake extends Animal{

        }

        const dog = new Dog('旺财')
        const cat = new Cat('汤姆')

        dog.sayHello()
        cat.sayHello()

        console.log(dog)
        console.log(cat)
    </script>

方法重写

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

OCP 开闭原则

​ - 程序应该对修改关闭,对扩展开放

    <script>
        class Animal{
            constructor(name){
                this.name = name
            }

            sayHello(){
                console.log("动物在叫~")
            }
        }

        class Dog extends Animal{
            // 在子类中,可以通过创建同名方法来重写父类的方法
            sayHello(){
                console.log("汪汪汪")
            }
        }

        class Cat extends Animal{
            // 重写构造函数
            constructor(name, age){
                // 重写构造函数时,构造函数的第一行代码必须为super()
                super(name) // 调用父类的构造函数
                this.age = age
            }
            
            sayHello(){
                // 调用一下父类的sayHello
                super.sayHello() // 在方法中可以使用super来引用父类的方法
                console.log("喵喵喵")
            }
        }

        const dog = new Dog("旺财")
        const cat = new Cat("汤姆", 3)

        dog.sayHello()
        cat.sayHello()
        console.log(dog)
        console.log(cat)
    </script>
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。