- 抽象クラスを宣言することが出来る
- 抽象クラスは処理が定義されていない抽象メソッドを持つ
- 抽象クラスのオブジェクトを作成できない
- インターフェイスを宣言してクラスで実装できる
- インターフェイスのフィールドは定数となる
- インターフェイスのメソッドは、処理を定義するとおが出来ない抽象メソッドとなる
- スーパーインターフェイスを拡張し、サブインターフェイスを宣言できる
Last active
December 27, 2015 21:29
-
-
Save shigemk2/7392233 to your computer and use it in GitHub Desktop.
やさしいJava 12
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
// 抽象クラスを拡張したサブクラスはどれも、 | |
// 抽象クラスの抽象メソッド(show()メソッド)と同じ名前のメソッドを持っている | |
// 乗り物クラス | |
abstract class Vehicle | |
{ | |
protected int speed; | |
public void setSpeed(int s) | |
{ | |
speed = s; | |
System.out.println("速度を"+speed+"にしました"); | |
} | |
abstract void show(); | |
} | |
// 車クラス | |
class Car extends Vehicle | |
{ | |
private int num; | |
private double gas; | |
public Car(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+"です"); | |
System.out.println("速度は"+this.speed+"です"); | |
} | |
} | |
// 飛行機クラス | |
class Plane extends Vehicle | |
{ | |
private int flight; | |
public Plane(int f) | |
{ | |
flight = f; | |
System.out.println("便"+this.flight+"の飛行機を作成しました"); | |
} | |
public void show() | |
{ | |
System.out.println("飛行機の便は"+this.flight+"です"); | |
System.out.println("速度は"+this.speed+"です"); | |
} | |
} | |
class Sample1 | |
{ | |
public static void main(String[] args) | |
{ | |
Vehicle[] vc; | |
vc = new Vehicle[2]; | |
vc[0] = new Car(1234, 20.5); | |
vc[0].setSpeed(60); | |
vc[1] = new Plane(232); | |
vc[1].setSpeed(500); | |
for(int i=0; i<vc.length; i++) { | |
vc[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
// instanceof演算子 | |
// 乗り物クラス | |
abstract class Vehicle | |
{ | |
protected int speed; | |
public void setSpeed(int s) | |
{ | |
speed = s; | |
System.out.println("速度を"+speed+"にしました"); | |
} | |
abstract void show(); | |
} | |
// 車クラス | |
class Car extends Vehicle | |
{ | |
private int num; | |
private double gas; | |
public Car(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+"です"); | |
System.out.println("速度は"+this.speed+"です"); | |
} | |
} | |
// 飛行機クラス | |
class Plane extends Vehicle | |
{ | |
private int flight; | |
public Plane(int f) | |
{ | |
flight = f; | |
System.out.println("便"+this.flight+"の飛行機を作成しました"); | |
} | |
public void show() | |
{ | |
System.out.println("飛行機の便は"+this.flight+"です"); | |
System.out.println("速度は"+this.speed+"です"); | |
} | |
} | |
class Sample2 | |
{ | |
public static void main(String[] args) | |
{ | |
Vehicle[] vc; | |
vc = new Vehicle[2]; | |
vc[0] = new Car(1234, 20.5); | |
vc[1] = new Plane(232); | |
for(int i=0; i<vc.length; i++) { | |
if(vc[i] instanceof Car) | |
System.out.println((i+1)+"番目のオブジェクトはCarクラスです"); | |
else | |
System.out.println((i+1)+"番目のオブジェクトはCarクラスではありません"); | |
} | |
} | |
} | |
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
// のりものインターフェイス | |
interface iVehicle | |
{ | |
void show(); | |
} | |
// 車クラス | |
class Car implements iVehicle | |
{ | |
private int num; | |
private double gas; | |
public Car(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 Plane implements iVehicle | |
{ | |
private int flight; | |
public Plane(int f) | |
{ | |
flight = f; | |
System.out.println("便"+this.flight+"の飛行機を作成しました"); | |
} | |
public void show() | |
{ | |
System.out.println("飛行機の便は"+this.flight+"です"); | |
} | |
} | |
class Sample3 | |
{ | |
public static void main(String[] args) | |
{ | |
iVehicle[] ivc; | |
ivc = new iVehicle[2]; | |
ivc[0] = new Car(1234, 20.5); | |
ivc[1] = new Plane(232); | |
for(int i=0; i<ivc.length; i++) { | |
ivc[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
//2つ以上のインターフェイスを実装する | |
// のりものインターフェイス | |
interface iVehicle | |
{ | |
void vShow(); | |
} | |
// 材料インターフェイス | |
interface iMaterial | |
{ | |
void mShow(); | |
} | |
// 車クラス | |
class Car implements iVehicle, iMaterial | |
{ | |
private int num; | |
private double gas; | |
public Car(int n, double g) | |
{ | |
num = n; | |
gas = g; | |
System.out.println("ナンバー"+num+"ガソリン量"+gas+"の車を作成しました"); | |
} | |
public void vShow() | |
{ | |
System.out.println("車のナンバーは"+this.num+"です"); | |
System.out.println("ガソリン量は"+this.gas+"です"); | |
} | |
public void mShow() | |
{ | |
System.out.println("車の材質は鉄です"); | |
} | |
} | |
class Sample4 | |
{ | |
public static void main(String[] args) | |
{ | |
Car car1 = new Car(1234, 20.5); | |
car1.vShow(); | |
car1.mShow(); | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment