0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Javaについてまとめてみたオブジェクト編】抽象クラスについて

Posted at

#はじめに
今回はJavaの抽象クラスについて書いていきたいと思います。
そんなに難しくはないのでサラッと理解しましょう!

##抽象クラスとは
抽象クラスは継承されることを前提としたクラスでスーパークラスとなる為に生まれた存在です。
特徴としては、

  • クラス宣言時にabstractを付ける
  • newをしてインスタンスを作成することが出来ない
  • 抽象メソッドを作成することが出来る。

といったものがあげられます。

###抽象クラスの宣言

抽象クラスの宣言
//下記のどっちかの宣言
abstract public Class Member{};
public abstract Class Member{};

宣言する時はこのようにアクセス修飾子の前後どちらかにabstractを付けます。

##抽象メソッドとは
抽象メソッドはスーパークラスでは処理内容は書かずにサブクラスで必ずオーバーライドしないといけないメソッドになります。
逆に言うと、必ずオーバーライドして欲しいメソッドを書きたい時に使います。
###抽象メソッドの宣言

抽象メソッドの宣言
public abstaract void show();

抽象メソッドは**「{}」**を書きません。
オーバーライド前提なのでサブクラスで処理を書いてもらいます。
##抽象クラスを使いたい場面の例
どんな時に抽象クラスを使うのか例を示したいと思います。
例えば図形のクラスを作りたいと思ったときに「三角形」や「四角形」など様々な図形がありますね。
図形には面積を出す公式がそれぞれ個別に存在します。
公式で計算してくれるメソッドは絶対欲しい!
そんな時はまず抽象クラスで図形のスーパークラスを作ります。

図形の抽象クラス
abstract public Class Shape(){
  //コンストラクタ
 protected Shape(){}
  //公式を書く用のメソッド
 abstract public int areaFomula();
}

あとは、この抽象クラスを継承して様々な図形のサブクラスを作っていきましょう

図形のサブクラス
//三角形のクラス 
public Class Triangle extends Shape(){
    public Triangle(){
     super();
    }
    
   @Override 
   public int areaFomula(){
     //底辺*高さ/2の処理を返す
   ...
   }
 }

##さいごに
抽象クラスどうだったでしょうか。
最大の特徴は抽象メソッドで便利ですが、そこまで難しくはないかと思います。
抽象クラスは抽象メソッド以外のクラスも書けますし、融通が利くのでぜひ使ってみてください!

ご覧いただきありがとうございました。

0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?