- スーパークラスからサブクラスを拡張することができます
- サブクラスは、スーパークラスのメンバを継承します
- スーパークラスのprotectedメンバに、サブクラスからアクセスすることが出来ます
- スーパークラスと同じメソッド名・引数の型・数を持つメソッドをサブクラスで定義して、オーバーライドすることが出来ます
- スーパークラスを指定しないクラスはObjectクラスのサブクラスとなります
Last active
December 27, 2015 20:09
-
-
Save shigemk2/7382458 to your computer and use it in GitHub Desktop.
やさしいJava 11
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// クラスを継承する | |
// 車クラス | |
class Car | |
{ | |
private int num; | |
private double gas; | |
public Car() | |
{ | |
num = 0; | |
gas = 0.0; | |
System.out.println("車を作成しました"); | |
} | |
public void setCar(int n, double g) | |
{ | |
num = n; | |
gas = g; | |
System.out.println("ナンバーを"+num+"ガソリン量を"+gas+"にしました"); | |
} | |
public void show() | |
{ | |
System.out.println("車のナンバーは"+this.num+"です"); | |
System.out.println("ガソリン量は"+this.gas+"です"); | |
} | |
} | |
// レーシングカークラス | |
class RacingCar extends Car | |
{ | |
private int course; | |
public RacingCar() | |
{ | |
course = 0; | |
System.out.println("レーシングカーを作成しました"); | |
} | |
public void setCourse(int c) | |
{ | |
course = c; | |
System.out.println("コース番号を"+course+"にしました"); | |
} | |
} | |
class Sample1 | |
{ | |
public static void main(String[] args) | |
{ | |
RacingCar rccar1; | |
rccar1 = new RacingCar(); | |
rccar1.setCar(1234, 20.5); | |
rccar1.setCourse(5); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 呼び出されるコンストラクタを明示的に指示する | |
// 車クラス | |
class Car | |
{ | |
private int num; | |
private double gas; | |
public Car() | |
{ | |
num = 0; | |
gas = 0.0; | |
System.out.println("車を作成しました"); | |
} | |
public Car(int n, double g) | |
{ | |
num = n; | |
gas = g; | |
System.out.println("ナンバー"+num+"ガソリン量"+gas+"の車を作成しました"); | |
} | |
public void setCar(int n, double g) | |
{ | |
num = n; | |
gas = g; | |
System.out.println("ナンバーを"+num+"ガソリン量を"+gas+"にしました"); | |
} | |
public void show() | |
{ | |
System.out.println("車のナンバーは"+this.num+"です"); | |
System.out.println("ガソリン量は"+this.gas+"です"); | |
} | |
} | |
// レーシングカークラス | |
class RacingCar extends Car | |
{ | |
private int course; | |
public RacingCar() | |
{ | |
course = 0; | |
System.out.println("レーシングカーを作成しました"); | |
} | |
public RacingCar(int n, double g, int c) | |
{ | |
super(n, g); // スーパークラスの引数2コのコンストラクタが呼び出されるようにする | |
course = c; | |
System.out.println("コース番号"+course+"のレーシングカーを作成しました"); | |
} | |
public void setCourse(int c) | |
{ | |
course = c; | |
System.out.println("コース番号を"+course+"にしました"); | |
} | |
} | |
class Sample2 | |
{ | |
public static void main(String[] args) | |
{ | |
RacingCar rccar1 = new RacingCar(1234, 20.5, 5); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 呼び出されるコンストラクタを明示的に指示する | |
// 車クラス | |
class Car | |
{ | |
protected int num; | |
protected double gas; | |
public Car() | |
{ | |
num = 0; | |
gas = 0.0; | |
System.out.println("車を作成しました"); | |
} | |
public Car(int n, double g) | |
{ | |
num = n; | |
gas = g; | |
System.out.println("ナンバー"+num+"ガソリン量"+gas+"の車を作成しました"); | |
} | |
public void setCar(int n, double g) | |
{ | |
num = n; | |
gas = g; | |
System.out.println("ナンバーを"+num+"ガソリン量を"+gas+"にしました"); | |
} | |
public void show() | |
{ | |
System.out.println("車のナンバーは"+this.num+"です"); | |
System.out.println("ガソリン量は"+this.gas+"です"); | |
} | |
} | |
// レーシングカークラス | |
class RacingCar extends Car | |
{ | |
private int course; | |
public RacingCar() | |
{ | |
course = 0; | |
System.out.println("レーシングカーを作成しました"); | |
} | |
public RacingCar(int n, double g, int c) | |
{ | |
super(n, g); // スーパークラスの引数2コのコンストラクタが呼び出されるようにする | |
course = c; | |
System.out.println("コース番号"+course+"のレーシングカーを作成しました"); | |
} | |
public void setCourse(int c) | |
{ | |
course = c; | |
System.out.println("コース番号を"+course+"にしました"); | |
} | |
public void newShow() | |
{ | |
System.out.println("レーシングカーのナンバーは"+this.num+"です"); | |
System.out.println("ガソリン量は"+this.gas+"です"); | |
System.out.println("コース番号は"+this.course+"です"); | |
} | |
} | |
class Sample3 | |
{ | |
public static void main(String[] args) | |
{ | |
RacingCar rccar1 = new RacingCar(1234, 20.5, 5); | |
rccar1.newShow(); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// メソッドをオーバーライドする | |
// 車クラス | |
class Car | |
{ | |
protected int num; | |
protected double gas; | |
public Car() | |
{ | |
num = 0; | |
gas = 0.0; | |
System.out.println("車を作成しました"); | |
} | |
public Car(int n, double g) | |
{ | |
num = n; | |
gas = g; | |
System.out.println("ナンバー"+num+"ガソリン量"+gas+"の車を作成しました"); | |
} | |
public void setCar(int n, double g) | |
{ | |
num = n; | |
gas = g; | |
System.out.println("ナンバーを"+num+"ガソリン量を"+gas+"にしました"); | |
} | |
public void show() | |
{ | |
System.out.println("車のナンバーは"+this.num+"です"); | |
System.out.println("ガソリン量は"+this.gas+"です"); | |
} | |
} | |
// レーシングカークラス | |
class RacingCar extends Car | |
{ | |
private int course; | |
public RacingCar() | |
{ | |
course = 0; | |
System.out.println("レーシングカーを作成しました"); | |
} | |
public RacingCar(int n, double g, int c) | |
{ | |
super(n, g); // スーパークラスの引数2コのコンストラクタが呼び出されるようにする | |
course = c; | |
System.out.println("コース番号"+course+"のレーシングカーを作成しました"); | |
} | |
public void setCourse(int c) | |
{ | |
course = c; | |
System.out.println("コース番号を"+course+"にしました"); | |
} | |
public void show() | |
{ | |
System.out.println("レーシングカーのナンバーは"+this.num+"です"); | |
System.out.println("ガソリン量は"+this.gas+"です"); | |
System.out.println("コース番号は"+this.course+"です"); | |
} | |
} | |
class Sample4 | |
{ | |
public static void main(String[] args) | |
{ | |
RacingCar rccar1 = new RacingCar(); | |
rccar1.setCar(1234, 20.5); | |
rccar1.setCourse(5); | |
rccar1.show(); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// オブジェクトをさす変数のクラスに関係なく、 | |
// オブジェクト自身のクラスによって、適切なメソッドが呼び出される | |
// 車クラス | |
class Car | |
{ | |
protected int num; | |
protected double gas; | |
public Car() | |
{ | |
num = 0; | |
gas = 0.0; | |
System.out.println("車を作成しました"); | |
} | |
public Car(int n, double g) | |
{ | |
num = n; | |
gas = g; | |
System.out.println("ナンバー"+num+"ガソリン量"+gas+"の車を作成しました"); | |
} | |
public void setCar(int n, double g) | |
{ | |
num = n; | |
gas = g; | |
System.out.println("ナンバーを"+num+"ガソリン量を"+gas+"にしました"); | |
} | |
public void show() | |
{ | |
System.out.println("車のナンバーは"+this.num+"です"); | |
System.out.println("ガソリン量は"+this.gas+"です"); | |
} | |
} | |
// レーシングカークラス | |
class RacingCar extends Car | |
{ | |
private int course; | |
public RacingCar() | |
{ | |
course = 0; | |
System.out.println("レーシングカーを作成しました"); | |
} | |
public RacingCar(int n, double g, int c) | |
{ | |
super(n, g); // スーパークラスの引数2コのコンストラクタが呼び出されるようにする | |
course = c; | |
System.out.println("コース番号"+course+"のレーシングカーを作成しました"); | |
} | |
public void setCourse(int c) | |
{ | |
course = c; | |
System.out.println("コース番号を"+course+"にしました"); | |
} | |
public void show() | |
{ | |
System.out.println("レーシングカーのナンバーは"+this.num+"です"); | |
System.out.println("ガソリン量は"+this.gas+"です"); | |
System.out.println("コース番号は"+this.course+"です"); | |
} | |
} | |
class Sample5 | |
{ | |
public static void main(String[] args) | |
{ | |
Car car1; | |
car1 = new RacingCar(); | |
car1.setCar(1234, 20.5); | |
car1.show(); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// スーパークラスの配列を利用する | |
// スーパークラスのポリモーフィズムとオーバーライド | |
// オーバーロードはメソッド名が同じで引数の形式が異なるメソッドを定義すること | |
// オーバーライドはサブクラスで、スーパークラスのメソッド名、引数の形式がまったく同じであるメソッドを定義すること | |
// である | |
// オブジェクト自身のクラスによって、適切なメソッドが呼び出される | |
// 車クラス | |
class Car | |
{ | |
protected int num; | |
protected double gas; | |
public Car() | |
{ | |
num = 0; | |
gas = 0.0; | |
System.out.println("車を作成しました"); | |
} | |
public Car(int n, double g) | |
{ | |
num = n; | |
gas = g; | |
System.out.println("ナンバー"+num+"ガソリン量"+gas+"の車を作成しました"); | |
} | |
public void setCar(int n, double g) | |
{ | |
num = n; | |
gas = g; | |
System.out.println("ナンバーを"+num+"ガソリン量を"+gas+"にしました"); | |
} | |
public void show() | |
{ | |
System.out.println("車のナンバーは"+this.num+"です"); | |
System.out.println("ガソリン量は"+this.gas+"です"); | |
} | |
} | |
// レーシングカークラス | |
class RacingCar extends Car | |
{ | |
private int course; | |
public RacingCar() | |
{ | |
course = 0; | |
System.out.println("レーシングカーを作成しました"); | |
} | |
public RacingCar(int n, double g, int c) | |
{ | |
super(n, g); // スーパークラスの引数2コのコンストラクタが呼び出されるようにする | |
course = c; | |
System.out.println("コース番号"+course+"のレーシングカーを作成しました"); | |
} | |
public void setCourse(int c) | |
{ | |
course = c; | |
System.out.println("コース番号を"+course+"にしました"); | |
} | |
public void show() | |
{ | |
System.out.println("レーシングカーのナンバーは"+this.num+"です"); | |
System.out.println("ガソリン量は"+this.gas+"です"); | |
System.out.println("コース番号は"+this.course+"です"); | |
} | |
} | |
class Sample6 | |
{ | |
public static void main(String[] args) | |
{ | |
Car[] cars; | |
cars = new Car[2]; | |
cars[0] = new Car(); | |
cars[0].setCar(1234, 20.5); | |
cars[1] = new RacingCar(); | |
cars[1].setCar(1234, 20.5); | |
for (int i=0; i< cars.length; i++) { | |
cars[i].show(); | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// toStringメソッドをオーバーライドする | |
// 車クラス | |
class Car | |
{ | |
protected int num; | |
protected double gas; | |
public Car() | |
{ | |
num = 0; | |
gas = 0.0; | |
System.out.println("車を作成しました"); | |
} | |
public Car(int n, double g) | |
{ | |
num = n; | |
gas = g; | |
System.out.println("ナンバー"+num+"ガソリン量"+gas+"の車を作成しました"); | |
} | |
public void setCar(int n, double g) | |
{ | |
num = n; | |
gas = g; | |
System.out.println("ナンバーを"+num+"ガソリン量を"+gas+"にしました"); | |
} | |
public String toString() | |
{ | |
String str = "ナンバー:"+num+"ガソリン量:"+gas; | |
return str; | |
} | |
} | |
class Sample7 | |
{ | |
public static void main(String[] args) | |
{ | |
Car car1 = new Car(); | |
car1.setCar(1234, 20.5); | |
System.out.println(car1); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// equalsメソッドを使う | |
// 車クラス | |
class Car | |
{ | |
protected int num; | |
protected double gas; | |
public Car() | |
{ | |
num = 0; | |
gas = 0.0; | |
System.out.println("車を作成しました"); | |
} | |
public Car(int n, double g) | |
{ | |
num = n; | |
gas = g; | |
System.out.println("ナンバー"+num+"ガソリン量"+gas+"の車を作成しました"); | |
} | |
public void setCar(int n, double g) | |
{ | |
num = n; | |
gas = g; | |
System.out.println("ナンバーを"+num+"ガソリン量を"+gas+"にしました"); | |
} | |
public String toString() | |
{ | |
String str = "ナンバー:"+num+"ガソリン量:"+gas; | |
return str; | |
} | |
} | |
class Sample8 | |
{ | |
public static void main(String[] args) | |
{ | |
Car car1 = new Car(); | |
Car car2 = new Car(); | |
Car car3; | |
car3 = car1; | |
boolean bl1 = car1.equals(car2); | |
boolean bl2 = car1.equals(car3); | |
System.out.println("car1とcar2が同じか調べたところ"+bl1+"でした"); | |
System.out.println("car2とcar3が同じか調べたところ"+bl2+"でした"); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// getClassメソッドを使う | |
// 車クラス | |
class Car | |
{ | |
protected int num; | |
protected double gas; | |
public Car() | |
{ | |
num = 0; | |
gas = 0.0; | |
System.out.println("車を作成しました"); | |
} | |
} | |
// レーシングカークラス | |
class RacingCar extends Car | |
{ | |
private int course; | |
public RacingCar() | |
{ | |
course = 0; | |
System.out.println("レーシングカーを作成しました"); | |
} | |
} | |
class Sample9 | |
{ | |
public static void main(String[] args) | |
{ | |
Car[] cars; | |
cars = new Car[2]; | |
cars[0] = new Car(); | |
cars[1] = new RacingCar(); | |
for (int i=0; i< cars.length; i++) { | |
Class cl = cars[i].getClass(); | |
System.out.println((i+1)+"番目のオブジェクトのクラスは"+cl+"です"); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment