LoginSignup
1
0

More than 3 years have passed since last update.

インターフェイスなど

Last updated at Posted at 2020-01-27

【抽象クラス】

abstractを修飾子に持つクラス
→new演算子でオブジェクトを生成できない
→必ず処理内容が定義されていない抽象メソッドを持つ(演算子abstractをもつメソッド)

(抽象クラスの利用)

→サブクラスに拡張して利用
→必ず抽象メソッドをサブクラスで定義してオーバーライドする

//抽象クラス
abstract class Car{
abstract void show(); //抽象メソッド
}

//抽象クラスを引き継ぐサブクラス
public SuperCar extends Car{
System.out.println("スーパーカーを作成しました");
//抽象メソッドをオーバーライド
}

//この流れで抽象クラスを継承したサブクラスが使える
//抽象クラスは、抽象メソッドを必ず書くこと以外普通のスーパークラスとして処理を記述できる

→同名の抽象メソッドを必ず持っていることから抽象クラスを使えばそのサブクラスをまとめて簡単に扱うことができる

(instancsof演算子)

→抽象クラスではたくさんのサブクラスを扱う場合があるため、instanceof演算子を使うことでオブジェクトのクラスを調べられて便利

//抽象クラス
abstract class Car{
abstract void show(); //抽象メソッド
}

//抽象クラスを引き継ぐサブクラス
public SuperCar extends Car{
System.out.println("スーパーカーを作成しました");
}

//単独のクラス
class Home{
public Home(){
System.out.println("新しい家が建ちました");
}
}

class Main{
public static void main(String[] args){
SuperCar spcar = new SuperCar();
Home home = new Home();

if(spcar instanceof SuperCar){
System.out.println("SuperCarクラスです");
}
else{
System.out.println("SuperCarクラスじゃないです");
}//出力結果:「Carクラスです」

if(Home instanceof Car){
System.out.println("Carクラスです");
}
else{
System.out.println("Carクラスじゃないです");
}//出力結果「Carクラスじゃないです」
}
}

【インターフェイス】

interfaceを修飾子にもつクラス
→インターフェイスのフィールドは自動的にpublic static finalをもつ
→インターフェイスのメソッドは自動的にabstractをもつ
→原則としてメンバの内容を変更できない
→newを使ってオブジェクトを作成できない
※ただしインターフェイス型の変数は定義できるが、オブジェクトは生成できない

(インターフェイスの実装)

→インターフェイスはクラスと組み合わせて使う

class クラス名 implements インターフェイス{}
//インターフェイスのメンバを受け継ぐ

→インターフェイスを引き継いだクラスを利用するには、インターフェイスのメソッドをすべて定義する必要がある
→抽象クラスと同様に、サブクラスをまとめて扱うことができる
※原則として、メンバの内容は変更できないので抽象クラスとの違いに気を付ける

【クラスの階層】

(多重継承)

→Javaではclass クラス名 extends A,Bのような多重継承はできない
→しかしインターフェイスなら二つ以上実装することが可能

class クラス名 implements A,B

(インターフェイスの拡張)

→インターフェイスもextendsを使うことで拡張可能

interface サブインターフェイス名 extends スーパーインターフェイス名{}

※なおサブインターフェイスを実装するときはextendsを使うので注意 
※抽象クラスやインターフェイスは拡張する必要の多い大規模なプログラムで使われる

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0