美文网首页
第二十三 继承

第二十三 继承

作者: 扶光_ | 来源:发表于2021-06-07 11:29 被阅读0次

一,继承

什么是继承呢?
就是子类可以继承父类的属性和方法。
那么我们来思考一下,是子类的方法多还是父类的方法多呢?
子类的方法>= 父类的方法
因为子类不仅继承了父类所有的属性和方法,自身还有自己的属性和方法。
来说说js中的三种继承方式

1.1.原型链继承

核心:将父类的实例作为子类的原型

   //创建父类构造
  function Father(name){
       this.name = name
   }
   //写一个原型的方法
   Father.prototype.getName = function(){
       return this.name;
   }
  //创建子类构造
   function child(age){
    this.age = age;
   }
//核心语法!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   //把老对象的东西 赋值给新对象的原型 继承了老对象的属性和方法
   child.prototype = new Father("光头强");//把实例给原型
   child.prototype.getAge = function(){
       return this.age;
   }
   var cd = new child(18);
 console.log(cd.getAge()+cd.getName());//继承了Father的方法 通过子类也可以输出父类的名字
原型链继承

2.2构造函数继承

核心:利用callapply 把父类的指向通过this指定的属性和方法复制过来

    //创建父类构造 然后定义属性和方法
       function Father(name){
            this.name = name;
            this.arr = ["熊大","熊二","小松鼠"];
            this.getName = function(){
                return this.name;
            }
       }
       //创建子类并继承父类的属性和方法 
       function Son(age){
//核心语句!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            Father.call(this,"侯旭")//把原本Father里面的指向变为Son里面的this指向
            this.age = age;
       } 

       var S1  = new Son(18);
       //输出自己的属性 和继承父类的属性和方法
       console.log(S1.age);
       console.log(S1.name);
       console.log(S1.arr);
       console.log(S1.getName());
构造函数继承

2.3原型链和构造函数的组合继承

核心:通过调用父类的构造,继承父类的属性并保存传参的优点,然后通过父类的实例作为子类的原型,实现函数的复用
结合两种继承方式,是最常用的继承方式

function Person(name){
            this.name = name;
            this.friends = ["老大","老二"];
        }
        // 原型方法
        Person.prototype.getName =  function(){
            return this.name;
        }
        function Parent(age){
            Person.call(this,"李五");       //构造函数继承
            this.age = age;
        }
        // 原型链继承
        Parent.prototype = new Person();
        var parent = new Parent(18);
        console.log(parent.name);
        console.log(parent.friends);
        console.log(parent.age);
        console.log(parent.getName());
        parent.friends.push("小刚");
        console.log(parent.friends);

组合继承

相关文章

  • 第二十三 继承

    一,继承 什么是继承呢?就是子类可以继承父类的属性和方法。那么我们来思考一下,是子类的方法多还是父类的方法多呢?子...

  • Go教程第二十三篇: Go中的面向对象:组合而不是继承

    本文是《Go系列教程》的第二十三篇文章。 Go本身不支持继承,但是它支持组合。组合的通常定义是:“放置在一起”。组...

  • 【论语导读】礼乐文明的继承与发扬

    礼乐继承与发扬 《论语》为政第二篇第二十三章,原文,子张问:“十世可知也?”子曰:“殷因于夏礼,所损益可知也。周因...

  • 继承 继承

    属性拷贝 继承不单单能通过原型链实现,也能通过其他方式实现,属性拷贝就是其中一种方法。 通过属性拷贝也能实现继承子...

  • 晚安时刻:理想了?

    第二十三晚

  • 继承(单继承,多继承)

    将共性的内容放在父类中,子类只需要关注自己特有的内容 python中所有的内容都是对象,所有的对象都直接或间接继承...

  • js继承方式

    类式继承 构造函数继承 组合继承 类式继承 + 构造函数继承 原型式继承 寄生式继承 寄生组合式继承 寄生式继承 ...

  • 2017.4.12

    第二十三天

  • Python-学习之路-08 OOP -02

    单继承和多继承 单继承:每个类只能继承一个类 多继承:每个类可以继承多个类 单继承的多继承的优缺点 菱形继承/钻石...

  • 原型相关(二)

    1.继承 继承方式:接口继承(只继承方法签名)实现继承(继承实际的方法)ECMAScript只支持实现继承,并且主...

网友评论

      本文标题:第二十三 继承

      本文链接:https://www.haomeiwen.com/subject/jwcleltx.html