JavaScript —— 类的创建和继承

JavaScript是一门解释性语言,但它也跟其他语言有相通的地方,比如类,js中的类与Java中的类的概念是一样的,只不过是js中的类貌似没有Java中的复杂(可能是我还没到达一定的深度)。对于我这种只是停留在了解不了解Java语言的人来说,还是有一定的基础的。哈哈哈哈哈哈。还是正事比较重要。

类的创建

还是先简单说下类和对象的概念吧。类是指具有相同的属性和方法抽象出来的一类事物,比如说车、衣服、书、数据库等,都可以看作是类。对象呢,是指一个具体的事物,通过类的实例化得到的,即对象也叫类的实例化。比如红色的车、我穿的一件上衣、我在看的这本书、正在使用的数据库,具体的事物就是对象。
类和对象说完了,咱就开始试试手,光说不练假把式啊,创建类实现才是真理。

创建类的语法

    class name{
        constructor(形参){

        }
        方法名([形参]){
            
        }
    }

其中constructor是类的构造器也叫构造函数,constructor用来接受形参,然后返回实例对象。constructor在创建类时可以不写,系统也会自动生成对应得constructor函数的。
类创建完了,下一步就是生成对象了,new关键字。
来个明星类吧。再实例化对象

        class Star {
            // 构造函数里面的参数是用来接受实例的参数,可以理解为是实例对象的属性
            constructor(sname, sage) {
                this.sname = sname;
                this.sage = sage;
            }
            // 方法
            say(work) {
                console.log(this.sname + "出演" + work);
            }
        }
        // new 关键字出现 会自动调用construct函数
        var lyf = new Star('李易峰');
        lyf.say("古剑奇谭");
        console.log(lyf);

你看你看结果
在这里插入图片描述
上面是一个简单的例子,主要是体会一下类创建对象的过程。下一步,再来体会一下类的继承。

类的继承

继承就是子类继承父类的属性和方法,同时子类还可以有自己的属性和方法。继承就是一个关键字extends。下面就表示Son类继承Father类。继承后子类可以使用父类的属性方法。

class Son extends Father{}

举个栗子:父类有加法的方法,子类只需继承父类的加法方法,子类自己再扩展一个减法的方法。

        class Father {
            constructor(x, y) {
                this.x = x;
                this.y = y;
            }
            // 计算加法
            sum() {
                return this.x + this.y;
            }
        }
        // 继承用extends关键字
        // 子类继承父类 子类可以使用父类的属性和方法,同时子类还能自己扩展的属性和方法
        class Son extends Father {
            // 子类要想使用父类的构造函数 必须用super()
            constructor(x, y) {
                // 把参数传到父类的构造器的参数里
                // 这里是把子类的两个参数传到父类的构造函数里了
                super(x, y); // 必须要写在第一行 也就是子类的this之前
                this.x = x;
                this.y = y;
            }
            less() {
                return this.x - this.y;
            }
        }
        var father = new Father(2, 3);
        var son = new Son(5, 8);
        // 子类自己的方法
        console.log(son.sum());
        // 子类继承了父类的加法
        console.log(son.less());

这样的实现跟Java中的继承思想是一毛一样的,就是用不同的语言实现的而已。

注意:super()方法,它是子类调用父类构造函数的方法,往里面传参数是调用父类的构造函数;同时super.方法名() 可以调用父类的普通函数的。emmmmm,我木有试。

一般的话我们都是用super()方法调用父类的构造函数。

类的创建和继承,目前暂时就这么多了,但是还有两点需要注意。

  1. 类是没有变量提升的,所以 必须先创建类,再能通过类去实例化对象,不能先实例化再去创建类。
  2. 类里面的共有属性和方法,必须要用this调用。在构造函数中,this指向实例化对象;在方法中,this指向方法的调用者
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章