1

JavaScript におけるカプセル化とは? Mozilla Web サイト (リンク)で次のステートメントを読んだ後、私は混乱しています。

カプセル化

前の例では、 Student は Person クラスの walk() メソッドがどのように実装されているかを知る必要はありませんが、それでもそのメソッドを使用できます。Student クラスは、変更する必要がない限り、そのメソッドを明示的に定義する必要はありません。これはカプセル化と呼ばれ、すべてのクラスがその親のメソッドを継承し、変更したいものだけを定義する必要があります。

カプセル化はクラス メンバーを隠すものだと理解していましたが、Mozilla サイトの例では単純な継承のようです。

4

2 に答える 2

1

これは、使用しているツールを使用するためにそれらを構築できる必要がないことを意味します。

そのようなものを抽象化できると、プログラミングのストレスが大幅に軽減されます。


alert()JavaScript でメソッドを 使用したことがありますか?

alert がブラウザとどのように通信するか、ブラウザがディスプレイとその間のすべてのレイヤーとどの ように通信するかを気にしなければならない場合、少し圧倒されると思います。

okフォントのレンダリングに使用されるベジエ曲線、ボタンの実装方法、または機能するその他すべてのコードについて心配する必要はありませんalert。知っているのは、JavaScript で記述できることalert("txt")と、ダイアログ ボックスが表示されることだけです。

于 2013-08-28T17:04:26.707 に答える
0

walkに実装されていPersonます。Student実装方法を変更することはできません。関数を完全にオーバーライドすることしかできません。


関数全体ではなく、親関数の一部をオーバーライドできるプログラミング言語を設計できます。このプログラミング言語には継承がありますが、カプセル化はありません。

もちろん、子が親関数の一部をオーバーライドする場合、これは子と親の実装が結合されていることを意味します。これは一般的に悪い習慣と考えられています。これが、ほとんどの言語がカプセル化を強制するところまで行っている理由ですが、これは絶対に必要なものではありません。


おそらく、プラグインの仕組みが良い例えでしょう。プラグインはさまざまな方法で作成できます。イベント フックを使用するか、巧妙な継承を使用しますが、インライン コード置換も実行できます。これがばかげていると思う前に、人気のあるフォーラム ソフトウェア phpBB の古いバージョンが実際にこれを行っていました。干渉する可能性のある 2 つのプラグインをインストールするとどうなるか想像できますが、何が起こるかわかりません!

于 2013-08-28T17:03:15.477 に答える