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指向方法的調用者
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章