基礎知識再び! (1/4)
作成:2010-01-14 15:54
更新:2011-10-11 12:03
更新:2011-10-11 12:03
■オブジェクト指向の考え方
怒涛のような勢いで、とりあえずウィンドウからボタンまで作ってしまいましたが、とにかく何か形のあるものを作れるようにしようと思い、細かな説明をかなり省いて進んでしまいました。とりあえずGUIまでいったことだし、ちょっと一息入れて、もう一度Javaの基本に立ち返って考えることにしましょう。
今までざっと触って、「Javaってのはなんか変わった言語だな」と感じたことでしょう。クラスというもの、その中につまっているメソッド、クラスを変数の中に生成したり、コンポーネントってクラスに別のクラスを入れたり…。なんだかわかったようなわからないようなプログラムの作り方をしますね。
そもそも、クラスとはなんでしょう? クラスというのは「設計図だ」といいました。これはおおまかに特徴をいってはいますが、正確な表現ではありません。
○クラスとは?○
クラスというのは、「あるオブジェクトの働きを定義したものである」といえます。オブジェクトというのは、「それ自身に必要な手続きと情報が全てまとめられたもの」です。よく「オブジェクト指向」なんて言葉を耳にしますが、オブジェクトというのはそういうもののことです。
例えば、今まで作ったクラスを考えてみてください。クラスには、自分自身を定義するメソッドがありました。そしてそのクラスに必要なメソッドが全てまとめて書かれていました。このクラスで実行できることは、全てこのクラス自身の中にまとめてあったわけです。
クラスは、汎用性の高い機能を1つ1つメソッドという形で定義しまとめたものです。実際にプログラムの中でこのクラスというものを使うときは、newというのを使い、クラスを参照する変数を作ってそれを操作していました。今まで単に「変数」と呼んでいましたが、このようにクラスを元にして、実際に生成されたオブジェクトを「インスタンス」と呼ぶ、と説明しました。また、クラスからインスタンスを生成することを「インスタンス化」(インスタンシエーション)といったりもします。
○インスタンスを作るとは?○
newされると、Javaは仮想マシンのメモリ内にクラスをロードし、インスタンスを作ります。そしてそのインスタンスを変数に設定するのです。こうやって「クラスを元にインスタンスを作る」という作業をしないと、そのクラスは使えないのです。(ただし、クラスのまま使うように設計することもできます。これについては、また別の機会に)
クラスとインスタンスは、ちょうどステーショナリファイル(ひな形)を連想させます。ステーショナリというのは、よく使うフォーマットを保存した特別な形式のファイルですね。このファイルに、必要なフォーマットの情報が既に組み込まれてあります。これを使うときは、ステーショナリを開くと、自動的にその複製ができ、それに修正を重ねます。クラスとインスタンスもこれと同じです。クラスを使うときは、必ずnewでインスタンスをメモリ内に生成し、このインスタンスを操作します。
インスタンスは、そのクラスの性質を全て保持しています。そしてそれ以外に、そのインスタンス独自のものなども付け足すことができたりします。同じクラスから作られたインスタンスでも、その後の操作によっては違うものになる可能性もあるのです。
○メソッドとは?○
それぞれのクラスの中には、そのクラスに用意されているさまざまな機能が記述されています。これが、お馴染み「メソッド」です。
メソッドの中には、必ず「そのクラスをどう作るか、クラスの初期化を定義するメソッド」がありました。クラス名と同じ名前のメソッドがあって、そこにクラスを作る時の定義を書いていたことを覚えていますか? この「クラスを生成するための手続きを書いたメソッド」のことを「コンストラクタ」といいます。クラスのインスタンスを生成するときは、このコンストラクタをnewで呼び出していたのです。
○スーパークラスとサブクラス○
さて、クラスの中には、更に別のクラスを継承して作られたものもありました。先に作成したTest4クラスも、Frameクラスを継承していましたね。このような継承関係にあったとき、「Test4はFrameのサブクラスである」といいます。また逆にFrameのほうから見た場合には、「FrameはTest4のスーパークラスである」といいます。
先に、クラスの定義を行なうときに「super()」というのを使って、上位にあるものへ処理を渡していましたね。これはつまり「スーパークラスに渡していた」のです。それでsuper()という名前だったのですね。
今までざっと触って、「Javaってのはなんか変わった言語だな」と感じたことでしょう。クラスというもの、その中につまっているメソッド、クラスを変数の中に生成したり、コンポーネントってクラスに別のクラスを入れたり…。なんだかわかったようなわからないようなプログラムの作り方をしますね。
そもそも、クラスとはなんでしょう? クラスというのは「設計図だ」といいました。これはおおまかに特徴をいってはいますが、正確な表現ではありません。
○クラスとは?○
クラスというのは、「あるオブジェクトの働きを定義したものである」といえます。オブジェクトというのは、「それ自身に必要な手続きと情報が全てまとめられたもの」です。よく「オブジェクト指向」なんて言葉を耳にしますが、オブジェクトというのはそういうもののことです。
例えば、今まで作ったクラスを考えてみてください。クラスには、自分自身を定義するメソッドがありました。そしてそのクラスに必要なメソッドが全てまとめて書かれていました。このクラスで実行できることは、全てこのクラス自身の中にまとめてあったわけです。
クラスは、汎用性の高い機能を1つ1つメソッドという形で定義しまとめたものです。実際にプログラムの中でこのクラスというものを使うときは、newというのを使い、クラスを参照する変数を作ってそれを操作していました。今まで単に「変数」と呼んでいましたが、このようにクラスを元にして、実際に生成されたオブジェクトを「インスタンス」と呼ぶ、と説明しました。また、クラスからインスタンスを生成することを「インスタンス化」(インスタンシエーション)といったりもします。
○インスタンスを作るとは?○
newされると、Javaは仮想マシンのメモリ内にクラスをロードし、インスタンスを作ります。そしてそのインスタンスを変数に設定するのです。こうやって「クラスを元にインスタンスを作る」という作業をしないと、そのクラスは使えないのです。(ただし、クラスのまま使うように設計することもできます。これについては、また別の機会に)
クラスとインスタンスは、ちょうどステーショナリファイル(ひな形)を連想させます。ステーショナリというのは、よく使うフォーマットを保存した特別な形式のファイルですね。このファイルに、必要なフォーマットの情報が既に組み込まれてあります。これを使うときは、ステーショナリを開くと、自動的にその複製ができ、それに修正を重ねます。クラスとインスタンスもこれと同じです。クラスを使うときは、必ずnewでインスタンスをメモリ内に生成し、このインスタンスを操作します。
インスタンスは、そのクラスの性質を全て保持しています。そしてそれ以外に、そのインスタンス独自のものなども付け足すことができたりします。同じクラスから作られたインスタンスでも、その後の操作によっては違うものになる可能性もあるのです。
○メソッドとは?○
それぞれのクラスの中には、そのクラスに用意されているさまざまな機能が記述されています。これが、お馴染み「メソッド」です。
メソッドの中には、必ず「そのクラスをどう作るか、クラスの初期化を定義するメソッド」がありました。クラス名と同じ名前のメソッドがあって、そこにクラスを作る時の定義を書いていたことを覚えていますか? この「クラスを生成するための手続きを書いたメソッド」のことを「コンストラクタ」といいます。クラスのインスタンスを生成するときは、このコンストラクタをnewで呼び出していたのです。
○スーパークラスとサブクラス○
さて、クラスの中には、更に別のクラスを継承して作られたものもありました。先に作成したTest4クラスも、Frameクラスを継承していましたね。このような継承関係にあったとき、「Test4はFrameのサブクラスである」といいます。また逆にFrameのほうから見た場合には、「FrameはTest4のスーパークラスである」といいます。
先に、クラスの定義を行なうときに「super()」というのを使って、上位にあるものへ処理を渡していましたね。これはつまり「スーパークラスに渡していた」のです。それでsuper()という名前だったのですね。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
※関連コンテンツ