はじめに
研修でオブジェクト指向を学んだのでまとめます
長いので何個かにわけます!
間違いがあれば教えてください!
参考図書は
https://sukkiri.jp/books/sukkiri_javap3
です
オブジェクト指向
オブジェクト指向とはソフトウェア開発の部品化の考え方
継承・多態性・カプセル化をオブジェクト指向の3大機能と呼ぶ
インスタンスとクラス
オブジェクト指向はまず最初にクラスを作る
クラスは金型のようなもので設計基盤
クラスを基にオブジェクト(インスタンス)を作成
クラス
public class Car {
String name; //車の名前
int oil; //ガソリンの量
}
簡易的なクラスです
クラスに定義されているnameやoilのような変数をフィールドと言います。
ここからインスタンスを生み出します
クラス名 変数名 = new クラス名();
public class Main {
public static void main(String[] args) {
Car c1 = new Car();
Car c2 = new Car();
}
}
Carクラスを基に2つのインスタンスを生み出しました
フィールドへの代入
フィールドへ代入するのは以下です
インスタンス名.フィールド名 = 代入するもの
public class Main {
public static void main(String[] args) {
Car c1 = new Car();
Car c2 = new Car();
c1.name = "honda";
c1.oil = 100;
System.out.println(c1.name);
}
}
結果
メソッドの定義
このままのCarクラスでは何もできないのでメソッドを定義します
public class Car {
...(省略)
public void run(){
System.out.println("run");
}
}
public class Main {
public static void main(String[] args) {
Car c1 = new Car();
Car c2 = new Car();
c1.run();
}
}
実行するとターミナルに run という文字が出ます(日本語だと文字化けの可能性があります)
コンストラクタ
インスタンスを生み出す際に自動的に実行されるものがコンストラクタです
public クラス名(引数){}
で宣言できます。
引数によって複数のコンストラクタを定義できます
コンストラクタのオーバーロードです
public class Car {
String name; //車の名前
int oil; //ガソリンの量
public Car(){
System.out.println("Create Car");
}
public Car(String name){
System.out.println(name + ": Create Car");
this.name = name;
}
}
thisはそのインスタンス自信を指します。
public class Main {
public static void main(String[] args) {
Car c1 = new Car();
Car c2 = new Car("nissan");
}
}
結果
それぞれのコンストラクタが実行されているのがわかります
おわりに
ざっくり書いたので書き漏らしているところが多々あります
つぎは継承についてまとめます