どれくらい学習すれば、自分でアプリが作れるようになる?
実際にプログラミングの勉強をはじめてみたけど、自分でアプリやサービスを作れるようになるまでどれくらいの時間がかかるんだろう?
こういった疑問を持つことがあると思います。
プログラミングの勉強は結果が出るまでに長い時間がかかるため、はやる気持ちが起きやすいです。
とはいえ、どれくらいの時間がかかるかわからなければ、モチベーションの維持が難しいのも事実です。
そこで、今回は実際に0からプログラミングの学習をする人がどれくらいの時間をかければ、自力でアプリやサービスを作れるようになるのかを説明したいと思います。
目次
アプリが作れるまでにかかる時間
アプリやWebサービスを作れるようになるまでは、結構長い道のりになります。
完全な初心者からスタートなら、最速で6か月、長くて1年はかかると見ておいたほうが良いです。
ときどき、3カ月以下の期間でアプリをリリースする人もいますが、1日12時間以上を費やさないと難しいです。そういう人は、ご飯・お風呂・寝る時間以外はすべてプログラミング学習に充てているような生活を送っています。
基礎の勉強が終わるまで3ヶ月~6ヶ月
基礎の勉強が終わるまでにかかる時間は、最速で3か月くらいになります。
昼間は仕事をしながらの勉強となると、6ヶ月は見ておいた方が良いでしょう。
大事なポイントは焦らないことです。
基本を勉強するのに思った以上に時間がかかるので焦る人がたまにいますが、焦ると余計に頭に内容が入ってきません。
結果的に、焦ることは遠回りになってしまうので、自分のペースで進めるように徹することが肝心です。
アプリを作って完走できるまで1ヶ月~2ヶ月
基礎が終わったら、実際にアプリやWebサービスを作る段階に移行します。
最初のWebサービスは、基礎で勉強したことに少し追加機能をつける程度のモノにすることをお勧めします。
Webサービス作成は、思った以上に時間がかかるものです。
ボリューム的に言えば、1ヶ月、長くても2か月以内に作り上げれるレベルのものにする方が、途中で投げ出さずに完遂できる可能性がグッと高まります。
アプリを作成するまでに覚える必要がある技術
Webサービスやアプリを作るためには、プログラミング以外でも覚えることがいくつかあります。
単純にプログラミングを書けばアプリが作れる、というわけでは無いのです。
そこで、どんな技術を覚える必要があるのか、ザっと見ていきましょう。
フレームワークを構成している言語
まずはプログラミング言語ですね。これがないと何も始まりません。
Webサービスないしアプリを開発するのであれば、フレームワークを使うのが一般的です。
とはいえ、フレームワークを構成するプログラミング言語がわからないと、いざエラーやトラブルが発生したときに手も足も出ません。
なので、まず最初に覚えるべきことはプログラミング言語になります。
フレームワークの使い方
フレームワークは、決められた型通りに書いていけば、ある程度のレベルのアプリやWebサービスが素早く作れるとても便利なものです。
ですが、プログラミング言語の文法とは違った書き方をすることが多いため、フレーワーク独自の書き方を覚える必要があります。
また、フレームワークはファイル構成が決まっているため、特定のファイルを置くべき場所が決まっています。ですので、どのファイルが何の役割を果たし、どこに置くべきなのかを知っておく必要があります。
環境構築の方法
おそらく多くの初心者の方が苦手にしている部分が、環境構築でしょう。
Progateとは違い、自分のPC上にプログラミングできる環境を設定する必要があります。
とはいえ、いまはXAMPPを使えばPHPでプログラミングできる環境をすぐに構築できるので、そこまでハードルの高いものでは無くなりつつあります。
慣れてくれば、仮想環境で環境構築をする方法にトライしてみると面白いですよ。DockerやAnsibleといったツールが有名なので、一度調べてみるのをお勧めします。
インフラ周りの設定
ローカルマシンである自分のPC上でアプリやWebサービスが動くようになっても、まだ完成ではありません。今度は作成したプログラムをWebサーバーに移動させ、動くようにする必要があります。
いちばん簡単な方法はHerokuを使うことです。
ただ、ある程度Herokuなどのリリースに慣れてきたら、自分でサーバーを借りて環境を構築する経験を積んでおくとよいでしょう。少しハードルは上がりますが、サーバー構築の経験を積んでおけば就職の際にとても役立ちます。
自分が書いたコードの管理方法
コードを管理する方法も覚えておきましょう。
選択肢はいろいろありますが、とりあえずGitを使っておけば間違いありません。Gitは今やデファクトスタンダードなツールなので、それ以外のツールはあまり考えなくて大丈夫です。
アプリを作れるようになるだけでも凄い
そもそもの話、アプリやらWebサービスを提供できるレベルに到達する人はほんの一握りです。
成果物をリリースして使えるようにできるだけでも、十分プログラミングができますと言えるレベルになっています。
多くの人はアプリを作る前に学習をやめてしまう
先ほども少し触れましたが、プログラミング学習を挫折する人は未だに多いです。
成果物をリリースする前に学習を放り出してしまうことは非常にもったいないですが、やはり何処かで自分はプログラミングに向いていないと感じるのでしょう。
実際、エラー解決やトラブル、調べものをするだけで1週間何も進まない状況は、仕事の中でも日常茶飯事です。そのため、「トラブルを楽しもう」というマインドセットに切り替えていくことが、ひとつの突破口になります。
未経験者でもアプリをリリースすれば、実績になる
未経験者でも、アプリやWebサービスをリリースすれば、それは実績となります。
実績とは仕事に限らず、「自分はこれくらいのことを達成できました」という話に過ぎません。
根拠がなくても、自信を持ちましょう。作ってみたけどまだ経験少ないし…などと考えずに、どんどん公表する方が最後は自分のためになります。
開発したアプリはポートフォリオになる
また、自分で開発したアプリ、Webサービスはポートフォリオとして利用できます。
ポートフォリオがあれば、2つの意味で便利なので、ぜひ作ることを推します。
- フリーランスの実績として使うことで、お客さんに提案するときの強みになります
- 就職面接のときに使うことで、プログラミングができることを証明できます
また、ポートフォリオを作るときに調べたり、学んだりする必要があるので、技術力の向上にもなります。
まとめ
アプリやWebサービスが作るまでの流れと、必要な技術、作り終わった後のメリットまでを説明しました。
最終的にポートフォリオを作るところまで来れば、Webエンジニアとして活躍できるチャンスが大きく広がります。
何度も言いますが、ポートフォリオ作成までこぎつけれる人はほんの一握りです。成果物を作れた段階で、すでに他の学習者から大きくリードしているのです。
実務を通して案件に取り組んだ実績を得るまではポートフォリオが大きな武器になるので、ぜひ作成にトライしてみて下さい。
Javaでオブジェクト指向をマスターしよう!-カプセル化編-
前回はインスタンス、およびコンストラクタについて学習しました。
ここまで、クラスは設計図、インスタンスはクラスから生成する実体であることを学んできました。またインスタンスは1つのクラスから複数生成可能であることも前回説明した通りです。
さて、前回の最後に「フィールドの値を直接設定、参照するのはオブジェクト指向では推奨されていない」と言いましたが、今回はその点について解説します。
なお、以下の実行環境を前提にしています。
OS:Windows 10 Pro
IDE:Eclipse 4.8 Photon(Pleiades)
Java:Java8
目次
1.カプセル化
今回はカプセル化について学習していきます。カプセル化を理解するコツは、「カプセル化しなくてもプログラムは組める」が、「カプセル化するとメリットがある」点を理解することです。ここからは前回より更に概念的な話になるので難解になりますが、なるべく分かりやすく説明します。
(1)カプセル化とは
カプセル化とは、「関連するデータと操作を一つの単位にまとめる」ことと「プログラムの実現手段を隠ぺいし、外部には操作方法のみを提供する」ための手法のことです。一つずつ見ていきましょう。
(2)関連するデータと操作を一つの単位にまとめる
これに関しては、実は前々回のクラス設計で既に作っていました。データは「フィールド」、操作は「メソッド」および「コンストラクタ」のことです。Humanクラスを見てみましょう。
public class Human {
//ここがデータ(フィールド)
String name;
double height;
double weight;
int age;
//コンストラクタも操作
Human(String name, double height, double weight, int age) {
this.name = name;
this.height = height;
this.weight = weight;
this.age = age;
}
//ここが操作(メソッド)
String teachName() {
return "私の名前は" + name + "です。";
}
String teachHeight() {
return "私の身長は" + height + "センチです。";
}
String teachWeight() {
return "私の体重は" + weight + "キロです。";
}
String teachAge() {
return "私は" + age + "歳です。";
}
}
データと操作がクラスという単位の中で一つになっています。これがカプセル化の一つ目の特徴です。
プログラムにおいて、操作を定義するためのアルゴリズムと、そのアルゴリズムに適したデータ構造は切り離すことができないことが大半です。例えば、int型配列を繰り返し処理ですべて合算するアルゴリズムを想像してみてください。
int[] intAry = {1, 3, 6, 11, 4};
int total = 0;
for (int i : intAry) {
total += i;
}
System.out.println(total); //25
繰り返し処理がアルゴリズムで、int型配列がアルゴリズムに適したデータ構造です。この場合どちらか一つを変えようとしても変えられないほど、アルゴリズムとデータ構造が依存しあっている関係にあります。これを踏まえると、アルゴリズムとそれに依存したデータ構造は別々に管理するより、一つの場所で管理した方がどちらかに修正が生じる場合も変更箇所が管理場所の内部でだけの話になるので、保守管理しやすいのです。オブジェクト指向では、アルゴリズムとデータ構造をクラスを使って「カプセル化」して、一つの場所に密閉しています。
(3)内部情報の隠蔽
オブジェクト指向では、プログラム内部の設計は公開せず、操作方法のみを外部に公開すべきという考え方があります。オブジェクトの利用者には機能の使い方だけ見せて、その機能の実現方法は必要ない情報なので、隠ぺいするのが正しいという概念です。
例えばスマートフォンを想像してみましょう。スマートフォンは電話やSNS、メール、音楽・動画再生など多くの機能がありますが、私たちはスマートフォンがどうやってその機能を提供しているのか、内部でどんなシステムが動いているか分かりません。しかし、分からなくてもスマートフォンを使うことはできますよね。この「実現方法は分からなくても操作できる」が重要なポイントです。
Javaであらかじめ用意されているクラスはほとんどがカプセル化されています。例えば、JavaのArrayListは後から要素を追加していき、内部で持っている配列の長さが足りなくなると、新しく元の配列の1.5倍の長さの配列を生成して元の配列からデータをコピーしています。しかし、私たちはこんなこと知らなくてもaddメソッドを呼べば要素を追加でき、getメソッドを呼べば要素を参照できることを知っています。内部で配列をどう扱っているか、どんなアルゴリズムが組まれているかを知る必要は無いのです(実際は知っていると処理の負荷を下げることができますが、ここでは内部詳細を知らなくてもArrayListは使えるという点を重視しています)。
オブジェクト指向では、アクセス修飾子を使ってこの状態を作り出します。
(4)Humanクラスをカプセル化する
では実際にカプセル化してみましょう。現時点で「データと操作を一つにまとめる」方はできているので、ここでは「内部情報の隠ぺい」を追加していきます。具体的には、フィールドを「private」にして情報を隠ぺいし、メソッドおよびコンストラクタを「public」にします。
public class Human {
private String name;
private double height;
private double weight;
private int age;
public Human(String name, double height, double weight, int age) {
this.name = name;
this.height = height;
this.weight = weight;
this.age = age;
}
public String teachName() {
return "私の名前は" + name + "です。";
}
public String teachHeight() {
return "私の身長は" + height + "センチです。";
}
public String teachWeight() {
return "私の体重は" + weight + "キロです。";
}
public String teachAge() {
return "私は" + age + "歳です。";
}
}
こうすることで内部情報は隠ぺいされ、内部情報にアクセスするための操作だけが残ります。
2.まとめ
先ほどもお話ししましたが、カプセル化はしなくても動くプログラムを組むことはできます。しかし、操作と、操作に関連するデータを同じ場所で管理することや、オブジェクトの利用者に必要な操作のみを提供し情報を隠蔽することで、プログラムの可読性や保守性が向上し、修正しやすいシステムにしていくことが可能です。オブジェクト指向はシステムを「仕様変更に強くする」のが目的でした。カプセル化は、オブジェクト指向には無くてはならない存在です。
次回は「継承」について解説します。継承もカプセル化同様、オブジェクト指向を理解する上で非常に重要な概念です。継承を覚えることで、さらに仕様変更に強いシステムを作れるようになりますので、オブジェクト指向の恩恵をより多く受けられるようになります。
Javaでオブジェクト指向をマスターしよう!-インスタンス編-
前回はクラスについて学習しました。
クラスはオブジェクトの設計図で、オブジェクト指向ではクラスを一つ一つ設計していくことが基本です。
今回は前回作成したHumanクラスを元に、インスタンスについて学習していきましょう。
なお、以下の実行環境を前提にしています。
OS:Windows 10 Pro
IDE:Eclipse 4.8 Photon(Pleiades)
Java:Java8
目次
1.インスタンス(Instance)
インスタンスは、日本語で「実体」と訳すのが最も適切です。
(1)インスタンスとは
前回学習したクラスは、オブジェクトの「設計図」であることは既にお話しした通りです。しかし、クラスは単なる設計図なので、それだけでは意味を持ちません。家を想像したら分かりやすいです。設計図だけあっても家を建てなければ設計した意味がありません。
この「家を建てる」という作業のことを、オブジェクト指向では「インスタンスを生成する」と言います。インスタンスを生成することで初めてクラスが意味を持ちます。
(2)インスタンスの生成
前回作ったHumanクラスを元にインスタンスを生成して、実体化したHumanから名前や年齢を聞いてみたいと思います。
mainメソッドに次のコードを入力して、実行してみてください。
public class Main {
public static void main(String[] args) {
Human itiro = new Human(); //…①
System.out.println(itiro.teachName()); //…②
}
}
インスタンスはnew演算子を使用して生成します。①で「itiro」インスタンスを生成しています。
ここで注目すべきは、HumanクラスがStringやIntegerのように「型」として使われている点です。Humanという型のitiro変数の中に、生成したHumanインスタンスが格納されているイメージです。
また②でitiroの名前を聞いてみました。System.out.printlnで結果をコンソールに出力していますが、実行すると次のように表示されます。
「私の名前はnullです。」
これはitiroインスタンスのnameフィールドがnullで暗黙的に初期化されているためです。次はフィールドの初期化方法を見ていきましょう。
(3)フィールド初期化方法①:コンストラクタ
コンストラクタとは、インスタンスを生成する際に呼び出されるメソッドのことです。
実際にコンストラクタを作成してみましょう。Humanクラスに次の記述を追加します。
public class Human {
String name;
double height;
double weight;
int age;
//コンストラクタ
Human(String name, double height, double weight, int age) {
this.name = name;
this.height = height;
this.weight = weight;
this.age = age;
}
(中略)
}
コンストラクタはクラス名と同じでなければなりません。this.nameやthis.heightなどの「this」は自身(つまりHumanクラス)のフィールドを指しています。コンストラクタ内で自身のフィールドに引数の値を格納して保持しています。
ここで先ほどのインスタンス生成を修正します。
public class Main {
public static void main(String[] args) {
Human itiro = new Human("鈴木一朗", 180.3, 79.4, 45);
System.out.println(itiro.teachName());
}
}
コンストラクタはインスタンスを生成するタイミングで呼び出します。実行してみましょう。次はこのように表示されます。
「私の名前は鈴木一朗です。」
クラス内のnameフィールドが初期化されたことで、ちゃんと名前を教えてくれるようになりました。ほかにも身長や体重も表示されるようになっているので、試してみてください。
(4)フィールド初期化方法②:setterメソッド
コンストラクタ以外にもsetterメソッドを作成してフィールドを初期化する方法もあります。
public class Human {
String name;
double height;
double weight;
int age;
void setName(String name) {
this.name = name;
}
void setHeight(double height) {
this.height = height;
}
void setWeight(double weight) {
this.weight = weight;
}
void setAge(int age) {
this.age = age;
}
(中略)
}
慣習的に、setterメソッドのメソッド名はset + フィールド名のキャメルケースです。setterメソッドでフィールドを初期化して、名前を教えてもらいましょう。
public class Main {
public static void main(String[] args) {
Human itiro = new Human();
itiro.setName("鈴木一朗");
System.out.println(itiro.teachName());
}
}
setName()で初期化しているので、「私の名前は鈴木一朗です」がコンソールに表示されます。
(5)インスタンスはいくつでも生成できる
インスタンスはクラスから何個でも生成することができます。つまり、同じ属性や操作を持った複数の実体を作れるということです。
例えばitiroのほかに、今度はhondaを追加してみましょう。コンストラクタで初期化します。
public class Main {
public static void main(String[] args) {
Human itiro = new Human("鈴木一朗", 180.3, 79.4, 45);
Human honda = new Human("本田圭佑", 182.0, 74.0, 32);
System.out.println(itiro.teachName());
System.out.println(honda.teachName());
}
}
これで新しく、Humanクラスのhondaが生成されました。コンソールには次のように表示されます。
2.まとめ
クラスが設計図なのに対してインスタンスは実体であることが今回のポイントです。同じクラスの型を持ったインスタンスを、いくつも作れるという点も今後重要になってくるので覚えておきましょう。
また、今回解説したフィールドの初期化方法ですが、実はコンストラクタやsetterメソッドを使わなくても、直接フィールドに値を格納することでも初期化は可能です。しかし、フィールドの値を直接設定、参照するのはオブジェクト指向では推奨されていません。そのあたりの話は、次回の「カプセル化」でお話しします。
Javaでオブジェクト指向をマスターしよう!-クラス編-
前回はオブジェクト指向の基本的な用語を押さえました。
ここからは一つ一つ詳細に解説します。まずは「クラス」と「インスタンス」について。クラスとインスタンスはオブジェクト指向の基本の「き」です。スムーズに先へ進めるようにしっかりと覚えましょう。
なお、以下の実行環境を前提にしています。
OS:Windows 10 Pro
IDE:Eclipse 4.8 Photon(Pleiades)
Java:Java8
目次
1.クラス(Class)
オブジェクト指向言語では、一つ一つのモノ(オブジェクト)を設計する必要があります。クラスはオブジェクトを設計するための設計図です。
(1)クラスの例
クラスの例を見てみましょう。次のクラスは実在する「サイコロ」のクラスです。
//クラス
class Dice {
//メンバ
int number; //サイコロの目
String color; //色
String name; //名前
int maxNumber; //サイコロの最大数
//コンストラクタ
Dice(int number, String color, String name, int maxNumber) {
this.number = number;
this.color = color;
this.name = name;
this.maxNumber = maxNumber;
}
//サイコロを振る
void play() {
number = (int)(Math.random() * maxNumber) + 1;
}
//サイコロの目を確認する
int getNumber() {
return number;
}
}
Diceという名前でクラスを作成しています。「出目(number)」「色(color)」「名前(name)」「最大数(maxNumber)」のフィールド(属性)があり、「サイコロを振る(play)」「サイコロの目を確認する(getNumber)」メソッド(操作)が定義されています。
オブジェクト指向では基本的に、フィールドの値はメソッドで変えます。上の例ではplay()メソッドを呼び出すことでnumber変数を操作します。これはサイコロを振ることで出目を変えるということ。Diceクラスは「実際にあるサイコロの特徴を定義」しています。
(2)クラスの作成
では実際にクラスを作成してみましょう。今回は「人間」をクラス上に設計してみましょう。Eclipseで新規クラスを作成してください。その際クラス名を「human」にします。すると次のコードが自動生成されます。
public class Human {
}
これでHumanクラスが作成されました。クラス名をHumanにすることで、「Human.java」クラスが作成されています。新しくクラスを作成するとファイル名とクラス名が一緒になります。
次にフィールドを追加しましょう。人間はキリがないほど属性だらけですが、今回は「名前」「身長」「体重」「年齢」の属性を定義します。
public class Human {
String name; //名前
double height; //身長
double weight; //体重
int age; //年齢
}
これらは人間が基本的に持っている属性を抽出した属性です。
今度はメソッドを追加しましょう。名前や身長を聞いたら答えれくれる操作を定義します。
public class Human {
(中略)
String teachName() {
return "私の名前は" + name + "です。";
}
String teachHeight() {
return "私の身長は" + height + "センチです。";
}
String teachWeight() {
return "私の体重は" + weight + "キロです。";
}
String teachAge() {
return "私は" + age + "歳です。";
}
}
これで名前や身長を聞いたら答えてくれるようになりました。しかし、このままだとフィールドの値が初期化されていないので、期待した答えが返ってきません。例えば名前を聞くために「teachName()」メソッドを呼ぶと「私の名前はnullです」と返却されます。これはString型のフィールドを明示的に初期化しない場合は、暗黙的に「null」で初期化するからです。フィールドの初期化については次回学習します。
2.まとめ
今回はクラスについて学びました。クラスはオブジェクトの設計図であることを認識することが最も重要です。
次回は今回作ったHumanクラスを元に、インスタンスについて学習していきます。インスタンスはクラスと対照的な存在なので、インスタンスを知ることでよりクラスの意味が理解できるようになるかと思います。
Javaでオブジェクト指向をマスターしよう!−基本編−
オブジェクト指向とは、プログラムをどう組み立てるのかの考え方のことです。Java、C++、PHP、Perl、Pythonなどの言語で利用されています。
上記のページでオブジェクト指向とは何か?なぜオブジェクト指向プログラミングが必要なのかが分かります。
ここではさらに一歩進んで、もっと具体的な内容を解説していきます。まずはオブジェクト指向の基本用語を、次のソースコードを例に解説します。
//クラス
class Dice {
//フィールド
int number; //サイコロの目
String color; //色
String name; //名前
int maxNumber; //サイコロの最大数
//コンストラクタ
Dice(int number, String color, String name, int maxNumber) {
this.number = number;
this.color = color;
this.name = name;
this.maxNumber = maxNumber;
}
//サイコロを振る
void play() {
number = (int)(Math.random() * maxNumber) + 1;
}
//サイコロの目を確認する
int getNumber() {
return number;
}
}
目次
クラス
クラス(Class)とは「設計図」です。
//クラス
class Dice {
(中略)
}
オブジェクト指向では「モノ」を設計していきます。上のサンプルでは「サイコロ」の特徴や状態、動作などをクラス内に定義しています。つまりクラス(設計図)上にサイコロを設計した状態です。このサイコロは色や最大値が異なると、姿形の違うサイコロを定義することができます。次の「インスタンス」で説明します。
インスタンス
インスタンス(Instance)とは「事実」「事例」といった意味があります。オブジェクト指向でのインスタンスは「実体」がもっとも近い意味合いでしょう。
Dice cube = new Dice(4, "White", "satou's Dice", 6);
Dice octahedron = new Dice(7, "Black", "tanaka's Dice", 8);
このサンプルでは2つのダイスをクラスからインスタンスへ実体化させています。上の方は「佐藤さんが持っている白い6面体で、4が出ている状態のサイコロ」を実体化しています。下の方は「田中さんが持っている黒い8面体で、7が出ている状態のサイコロ」を実体化しています。このように1つのクラスから別々の特徴を持ったサイコロを作ることができます。
また、新しくサイコロを実体化するには「コンストラクタ」を通る必要があります。
//コンストラクタ
Dice(int number, String color, String name, int maxNumber) {
this.number = number;
this.color = color;
this.name = name;
this.maxNumber = maxNumber;
}
コンストラクタはサイコロを実体化するために必要な特徴や状態の初期値を入れるために必要で、すべてのクラスにおいて必須です。
フィールド
フィールド(field)はそのインスタンスがもつ「属性(特徴や状態)」のことです。基本的にクラスの設計はフィールドで属性を、メソッドで操作を定義します。
//フィールド
int number; //サイコロの目
String color; //色
String name; //名前
int maxNumber; //サイコロの最大数
上の例だとサイコロの目は状態、それ以外はサイコロの特徴を表しています。
メソッド
メソッド(method)はインスタンス自身、またはそのインスタンスに対して行える「操作」のことです。
//サイコロを振る
void play() {
number = (int)(Math.random() * maxNumber) + 1;
}
//サイコロの目を確認する
int getNumber() {
return number;
}
「play」はサイコロを振る操作です。サイコロを振ることでnumber変数の値が変わる、つまり「サイコロの状態」を変えています。また「getNumber」は現在のサイコロの目を確認する操作です。
そのほかの重要な用語
オブジェクト指向を理解するにあたって避けては通れないのが「カプセル化」「継承」「ポリモーフィズム」です。
カプセル化
継承
あるクラスの属性や操作を受け継いで、新しいクラスを作ることを「継承」と言います。例えば「作業者」クラスを継承して「プログラマー」クラスを作るといったことです。
--------------------------------------------------------------------------------------------------------
※ここに「Javaでオブジェクト指向をマスターしよう!−継承−」ページへのリンク挿入予定
--------------------------------------------------------------------------------------------------------
ポリモーフィズム(多態性)
同じクラスを継承した複数のサブクラスが持つそれぞれの動作を、異なる動作にすることを「ポリモーフィズム」と言います。例えば「生物」クラスを継承した「人間」と「猫」のサブクラスがあったとします。それぞれを走らせたい場合、人間は二足で走りますが猫は手足4本で走ります。このように、同じ「走る」でも異なる動作をさせたい場合に利用します。
--------------------------------------------------------------------------------------------------------
※ここに「Javaでオブジェクト指向をマスターしよう!−ポリモーフィズム−」ページへのリンク挿入予定
--------------------------------------------------------------------------------------------------------
まとめ
いきなりすべてを理解しようとしても、思うようにいかないと思います。オブジェクト指向の用語を一つ一つ丁寧に理解していくことが、途中で挫折しないコツです。