Javaを勉強してみたPart2
前回からの続き・・・
・今回はオブジェクト指向的な考え方を勉強してみた
・PythonやC#で既になんとなくは知ってるのでちょっと飛ばし気味
メソッド
・一言で「処理する関数的なもの」
オーバーロード
・存在しているメソッドと名前が同じメソッドを宣言すること。
・引数の個数で判別する
具体的に…
【メソッド名・引数の型・引数の個数】この3つ(シグネチャ)の要素が考慮される
オブジェクト指向言語
クラス
・枠組み
インスタンス
クラスをコピーしたもの
//クラスを作成
class Card{
int id;
String name;
}
//インスタンスを生成
Card card = new Card();
card.id=1234;
card.name="sample_name";
基本型
・int,doubleのように値そのものを変数に入れることができる
参照型
・インスタンスへの山椒を入れる型
null
・何もないことを示す
コンストラクタ(初期化処理)
・クラス名と同じメソッド的なものを作成する
・クラスのインスタンスが生成されたときに行われる処理
・コンストラクタは引数の個数によって区別できるため引数の個数が異なるコンストラクタを作成してもOK
//クラスを作成
class Card{
int id;
String name;
Card(int id,String name){
this.id=id;
this.name=name;
}
}
クラス変数
・インスタンスを生成しなくても使用できる変数
・先頭にstaticをつけて宣言する
・クラス名.変数名で参照する
継承
・新しく宣言するクラスですでにあるクラスの機能を組み入れる。
・サブクラスとスーパークラスに同じ名前のメソッドがあるとサブクラスのメソッドが優先される
・メソッドをオーバーライドしてスーパークラスのメソッドが実行されなくなることを「スーパークラスのメソッドが隠蔽される」と表現することがある。
・スーパークラス=親となるクラス
・サブクラス=継承した子クラス
class A{
クラス内容
}
class B extends A{
追加する新しいフィールドとメソッド
}
オーバーライド
・スーパークラスで宣言されたメソッドの内容がサブクラスで宣言されて内容が上書きされる
・upperキーワードを使うとスーパークラスのメソッドをサブクラスから実行できる
継承関係とコンストラクタの動き
〇コンストラクタは継承されずデフォルトコンストラクタと呼ばれるコンストラクタが追加されたものとして処理される。
〇サブクラスのコンストラクタの動作
サブクラスに1つでもコンストラクタが宣言されているとデフォルトコンストラクタは追加されない
〇スーパークラスのコンストラクタの呼び出し
super(5);
ポリモーフィズム(多態性一様な動作をする)
スーパークラスの型を指定した変数にサブクラスのインスタンスを代入すること。
配列で複数のインスタンスを管理するときに役立つ。
しかし、異なるクラスのインスタンスを親クラスの型の配列に代入すると各要素になにが入ってるかわからなくなるのでそれを確認することができる
変数名 instanceof 親クラス名;
型変換(キャスト)
スーパークラスの変数に継承したクラスを入れて継承したクラスのメソッドをそのまま実行するとエラーになるため、型変換をする必要がある
スーパークラス 変数 = new サブクラス;
((サブクラス)変数).メソッド();
Discussion