美文网首页
01_18.class继承

01_18.class继承

作者: Robyn_Luo | 来源:发表于2017-11-13 11:30 被阅读0次
     <script>
        class Animal {          
    
            constructor(name, gender) {
               this.name = name;
               this.gender = gender;
            }
    
            // 这个方法相当于以前加到原型上的实例方法
            run() {
                console.log('跑吧');
            }
    
            // 这个方法加了static修饰符,就是以前加到类身上的静态方法
            static getMaxAge() {
                console.log(250);
            }
        }
    
        // 动物拥有的属性方法,按照常理来讲,狗应该也有,所有这里通过extends关键字实现继承,提高复用,减少冗余
        class Dog extends Animal {
    
            eat() {
                console.log('吃屎');
            }
    
        }
        
        let chaiquan = new Dog('柴犬', '公');
        console.log(chaiquan.name);
        console.log(chaiquan.gender);
        chaiquan.run();
        chaiquan.eat();
    
        // 人也是动物,也继承一下
        class Person extends Animal {
            
            // 如果继承的子类拥有独特的属性,需要写构造器来添加,
            // 但是构造器里面的第一句话必须是super()调用
            constructor(name, gender, price) {
                super(name, gender);
                this.price = price;
            }
    
            study() {
                console.log('闻鸡起舞');
            }
    
        }
    
        let xiaoming = new Person('小明', '男', '一张毛爷爷');
        console.log(xiaoming.name);
        console.log(xiaoming.gender);
        console.log(xiaoming.price);
        xiaoming.run();
        xiaoming.study();
    
        // Person也继承了Animal的静态方法,所以可以直接拿来调用
        Person.getMaxAge()
        </script>
    

    相关文章

      网友评论

          本文标题:01_18.class继承

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