Skip to content

Instantly share code, notes, and snippets.

@shigemk2
Last active Dec 27, 2015
Embed
What would you like to do?
やさしいJava 12
  • 抽象クラスを宣言することが出来る
  • 抽象クラスは処理が定義されていない抽象メソッドを持つ
  • 抽象クラスのオブジェクトを作成できない
  • インターフェイスを宣言してクラスで実装できる
  • インターフェイスのフィールドは定数となる
  • インターフェイスのメソッドは、処理を定義するとおが出来ない抽象メソッドとなる
  • スーパーインターフェイスを拡張し、サブインターフェイスを宣言できる
// 抽象クラスを拡張したサブクラスはどれも、
// 抽象クラスの抽象メソッド(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();
}
}
}
// 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クラスではありません");
}
}
}
// のりものインターフェイス
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();
}
}
}
//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