Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
やさしいJava 11
  • スーパークラスからサブクラスを拡張することができます
  • サブクラスは、スーパークラスのメンバを継承します
  • スーパークラスのprotectedメンバに、サブクラスからアクセスすることが出来ます
  • スーパークラスと同じメソッド名・引数の型・数を持つメソッドをサブクラスで定義して、オーバーライドすることが出来ます
  • スーパークラスを指定しないクラスはObjectクラスのサブクラスとなります
// クラスを継承する
// 車クラス
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);
}
}
// 呼び出されるコンストラクタを明示的に指示する
// 車クラス
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);
}
}
// 呼び出されるコンストラクタを明示的に指示する
// 車クラス
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();
}
}
// メソッドをオーバーライドする
// 車クラス
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();
}
}
// オブジェクトをさす変数のクラスに関係なく、
// オブジェクト自身のクラスによって、適切なメソッドが呼び出される
// 車クラス
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();
}
}
// スーパークラスの配列を利用する
// スーパークラスのポリモーフィズムとオーバーライド
// オーバーロードはメソッド名が同じで引数の形式が異なるメソッドを定義すること
// オーバーライドはサブクラスで、スーパークラスのメソッド名、引数の形式がまったく同じであるメソッドを定義すること
// である
// オブジェクト自身のクラスによって、適切なメソッドが呼び出される
// 車クラス
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();
}
}
}
// 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);
}
}
// 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+"でした");
}
}
// 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