首頁 >Java >java教程 >Java什麼是類別? class的相關介紹

Java什麼是類別? class的相關介紹

青灯夜游
青灯夜游原創
2018-09-18 15:26:582304瀏覽

本章帶給大家Java什麼是類別? class的相關介紹,讓大家了解一些關於類別(class)的知識。有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

class Point{
    constructor(){

    }

    toString(){

    }
}

console.log(Object.keys(Point.prototype))
console.log(Object.getOwnPropertyNames(Point.prototype))

上面就是一個類別

1、類別的資料型別就是函數,類別本身就指向建構子

console.log(typeof Point)  // "function"
console.log(Point ===Point.prototype.constructor)  // true

2、建構子的prototype 屬性在ES6 的“類”上繼續存在。事實上,類別的所有方法都定義在類別的 prototype 屬性上。

開頭的程式碼等同於

class Point{}
Point.prototype = {
    constructor() {},
    toString() {},
}

由於類別的方法(除 constructor 以外)都定義在 prototype 物件上,所以類別的新方法可以添加在 prototype 物件上。 Object.assign 方法可以一次的向類別新增多個方法

很重要的一點,類別的內部定義的所有方法都是不可列舉的。

console.log(Object.keys(Point.prototype))  // []
console.log(Object.getOwnPropertyNames(Point.prototype))  // ["constructor", "toString"]

其中,Object.keys() 傳回一個數組,包含物件本身所有可枚舉屬性,不包含Symbol,Object.getOwnPropertyNames() 傳回一個數組,包含自身所有屬性,不包含Symbol

3、constructor方法

constructor 方法是類別的預設方法,透過new 指令產生物件實例是自動呼叫該方法。一個類別必須有 constructor 方法,如果沒有定義,一個空的  constructor 方法會被預設為新增。

constructor 方法預設回傳實例對象,也就是 this 的指向。不過完全可以指定回傳另外一個物件

4、繼承

class ColorPoint extends Point {
    constructor(x, y, color) {
        super(x, y) // 调用父类的 constructor(x, y)
        this.color = color
    }

    toString() {
        return this.color + '' + super.toString() // 调用父类的 toString()
    }
}

看到extends 是不是很熟悉,用過React 的人肯定知道,在React 的ES6 寫法中我們常常這樣寫

class XXXXX extends Component{}

ColorPoint  透過extends 可以繼承Point 類別的所有屬性和方法

有沒有留意到constructor 和toString方法中都出現了super 關鍵字,他指父類別的實例。

子類別必須在 constructor 方法中呼叫 super 方法,否則新實例就會報錯。因為子類別沒有自己的 this 對象,而是繼承了父類別的 this 對象,如果不呼叫 super ,子類別就無法得到 this。

其實 class 就是對物件原型的一種更簡潔的寫法

以上是Java什麼是類別? class的相關介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn