ホームページ  >  記事  >  Java  >  Javaのクラスとは何ですか?関連するクラスの紹介

Javaのクラスとは何ですか?関連するクラスの紹介

青灯夜游
青灯夜游オリジナル
2018-09-18 15:26:582265ブラウズ

この章では、Java のクラスとは何なのかについて説明します。関連するクラスの紹介により、誰もがクラスに関する知識を知ることができます。困っている友人は参考にしていただければ幸いです。

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を指します。 「コンストラクタのコンストラクタは「ES6」クラスにあります」は引き続き存在します。実際、クラスのすべてのメソッドは、クラスのプロトタイプ プロパティで定義されます。

で始まるコードは

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

と同等です。クラスのメソッド (コンストラクターを除く) はすべてプロトタイプ オブジェクトで定義されているため、クラスの新しいメソッドをプロトタイプ オブジェクトに追加できます。 。 Object.assign メソッドは、一度に複数のメソッドをクラスに追加できます。

クラス内で内部的に定義されているすべてのメソッドが列挙可能ではないことが非常に重要です。

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

その中で、Object.keys() は、Symbol を除くオブジェクト自体の列挙可能なすべてのプロパティを含む配列を返し、Object.getOwnPropertyNames() は、Symbol を除くすべての独自のプロパティを含む配列を返します。シンボル

3. コンストラクター メソッド

コンストラクター メソッドは、新しいコマンドを通じてオブジェクト インスタンスを生成するときに自動的に呼び出されます。クラスにはコンストラクター メソッドが必要です。それが定義されていない場合は、デフォルトで空のコンストラクター メソッドが追加されます。

コンストラクター メソッドはデフォルトでインスタンス オブジェクトを返します。これがポイントです。ただし、別のオブジェクトを返すように指定することもできます。

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()
    }
}

React を使用したことがある人は、React の ES6 の記述方法でよく知られているように思います。次のように記述します

class XXXXX extends Component{}

ColorPoint は、extends を通じて Point クラスのすべてのプロパティとメソッドを継承できます

スーパー キーワードがコンストラクター メソッドと toString メソッドの両方に表示され、インスタンスを参照していることに気づきましたか?親クラスの。

サブクラスはコンストラクター メソッドでスーパー メソッドを呼び出す必要があります。そうしないと、新しいインスタンスの作成時にエラーが報告されます。サブクラスは独自の this オブジェクトを持たず、親クラスの this オブジェクトを継承するため、スーパーが呼び出されないと、サブクラスは this を取得できません。

実際、クラスはオブジェクトのプロトタイプを記述するより簡潔な方法です

以上がJavaのクラスとは何ですか?関連するクラスの紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。