js extends继承 ES6

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>extends继承</title>
</head>
<body>
<script type="text/javascript">
    // 定义子类时,使用extends关键字 继承父类
    // 不需要实例化父类
    //父类
    class A{
        constructor(){
            this.age = 30;
        }
        say(){
            console.log('我是A中的实例方法say');
        }
        static coding(){
            console.log('我是A中的静态方法coding');
        }
    }

    //子类
    class B extends A{
        //子类构造方法
        constructor(){
            //函数形式的super() 表示调用父类的构造方法
            //如果子类定义了构造方法(使用了this),必须先调用super()
            super();

            this.sex = '保密';
        }
        //super.方法() 写法,如果当前方法是实例方法,则调用父类的实例方法
        //如果当前方法是静态方法,则调用父类的静态方法
        //同名的实例方法,子类会覆盖父类
        say(){
            //如果需要同时执行父类的方法
            //需要使用super.父类方法(); 调用
            super.say();
            console.log('我是B中的实例方法say');
        }
        //同名的静态方法,子类会覆盖父类
        //
        static coding(){
            //如果需要同时执行父类的方法
            //需要使用super.父类方法(); 调用
            // super.coding();
            console.log('我是B中的静态方法coding');
        }
    }

    //实例化子类得到子对象
    var obj = new B();
    obj.say();
    console.log(obj.age)

    //调用静态方法
    B.coding();


    //单继承: 一个类只能继承一个类
    //但是可以子类继承父类,父类再继承另一个类
    // //子类
    // class C extends B{

    // }

    // //实例化子类得到子对象
    // var obj2 = new C();
    // obj2.say();

</script>
</body>
</html>

 

posted @ 2021-02-25 14:56  华北业余选手  阅读(45)  评论(0)    收藏  举报