最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 面向对象编程三大特性------封装、继承、多态

    正文概述 掘金(就叫王可爱_)   2020-12-23   702

    面向对象编程三大特性------封装、继承、多态

    首先什么是面向对象?

    • 面向对象(Object Oriented)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。
    • 面向对象的方法主要是把事物给对象化,包括其属性和行为。面向对象编程更贴近实际生活的思想。总体来说面向对象的底层还是面向过程,面向过程抽象成类,然后封装,方便使用就是面向对象(万物皆对象)。

    面向对象主要有三大特性:封装、继承、多态

    1.封装

    对于封装而言,一个对象它所封装的是自己的属性和方法,所以它是不需要依赖其他对象就可以完成自己的操作,封装也有众多的好处,例如:降低耦合率 可重复调用类中的属性 提高安全性

    2.继承(面向对象编程最重要的部分)

    继承是子对象可以继承父对象的属性和行为,即父对象拥有的属性和行为,其子对象也就拥有了这些属性和行为。这非常类似大自然中的物种遗传。 面向对象编程三大特性------封装、继承、多态

    • 2.1、借用构造函数继承 A.call(this);
      缺点:是只继承成员属性,不继承原型上的属性
    • 2.2、原型式继承 B.prototype=A.prototype;
      缺点:该方法只继承原型上的属性,不继承成员属性
    • 2.3、原型链继承 原型上实例化一个类 B.prototype=new A();
      缺点:继承的成员属性在原型上,可能无法检测到存在bug
    • 2.4、组合式继承(稳妥式继承)A.call(this);+ B.prototype=new A();
      缺点:父类执行两次
    • 2.5、寄生式继承
    • 2.6、组合寄生式继承(最好的)
    function A(){//类
             this.a="a"//成员属性
         }
     A.prototype.aa=function(){//原型上面的一个方法  prototype函数特定的原型写法
            console.log(this.a)
         }
     A.prototype.aaa=new C()
       
     function B(){//类
             this.b="b"
             A.call(this);//借用构造函数来继承a的属性
        }
     //B.prototype=A.prototype;
       B.prototype=new A();
       B.prototype.bb=function(){//原型上面的一个方法  prototype函数特定的原型写法
            console.log(this.b)
         }
    
         function C(){//类
             this.c="c"
             A.call(this);
         }
        C.prototype=new A();//注意:必须放在最前边
        C.prototype.cc=function(){
            console.log(this.c)
         }
         var a =new A();//实例化
         var b =new B();//实例化
         var C =new C();//实例化
        b.bb();//通过a.aa来调用原型上面的方法
        console.log(a)
        console.log(C)
    
    
    <script>
        //01父类
        class Person {
            constructor(name) {
                this.name = name;
            }
            showName() {
                console.log("我是父类里面的showname")
                return `名字为:${this.name}`
            }
        }
        //子类
        class Student extends Person {
            constructor(name, skill) {
                super(name);//相当于将父级的构造函数再执行一次
                this.skill = skill;//子类的属性
            }
            showName(){
                super.showName();//如果直接写一个跟父类一样的函数名,会把父类里面的方法
                //覆盖掉,如不想覆盖super.showName()可以这样调用,使父类和子类一起执行
                console.log("我是子类里面的showname")
            }
            showSkill() {
                return `门生的技能为: ${this.skill}`
            }
        }
        let stu1 = new Student("strive", "逃学")
        console.log(stu1.showSkill());
        console.log("--------------------")
        console.log(stu1.showName());
    
    </script>
    

    3.多态

    多态性指的是:同一操作作用与不同类的实例,将产生不同的执行结果,即不同类的对象收到相同的消息时,将得到不同的结果。 实现多态的三个必要条件:
    1.继承
    2.重写
    3.父类引用指向子类对象
    通俗来讲就是同一个函数,因为传递的参数列表不同,可以实现的不同的功能


    起源地下载网 » 面向对象编程三大特性------封装、继承、多态

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元