Rainbow Planet

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

Java

Javaのabstractとは?抽象クラスの概要やサンプルPGをご紹介

投稿日:2020年10月12日 更新日:

<目次>

(1) Javaのabstractとは?抽象クラスの概要やサンプルPGをご紹介
 (1-1) 抽象クラス(abstract)とは
 (1-2) 抽象クラスの目的や用途
 (1-3) 抽象クラスの構文
 (1-4) 抽象クラスとインターフェイスとの違いは?
 (1-5) 抽象クラスのサンプルプログラム
 (1-6) 備考:abstractメソッドの制約

(1) Javaのabstractとは?抽象クラスの概要やサンプルPGをご紹介

(1-1) 抽象クラス(abstract)とは

実装が無いメソッドを持ち、オブジェクトを生成出来ない (インスタンス化できない)クラスの事を「抽象クラス」と呼びます。
抽象クラスはスーパークラス(継承される側のクラス)として利用される事が多く、全てのabstractメソッド(抽象メソッド)を実装したらインスタンス化が可能になります。
 

(1-2) 抽象クラスの目的や用途

・複数のサブクラスから継承できる共通的な振る舞い(メソッド等)を定義するために使われます。
・その際に抽象クラスは実装されたメソッドを持つことが出来るので、継承する側は一部のみを実装するだけで済みます。
 

(1-3) 抽象クラスの構文

以下は抽象クラスの構文です。
抽象クラス内の実装の無いメソッドを「抽象メソッド」と呼んでいます。
public abstract class [クラス名]  {
	//中略
	public abstract [戻り値の型] [メソッド名](引数を列挙);
	//中略
}
 

(1-4) 抽象クラスとインターフェイスとの違いは?

(違い①)
実装されたメソッドを持つことが出来る(インターフェイスはメソッドのシグニチャ(=外部仕様=メソッド名、引数、戻り値の型、例外の型)のみ)

(違い②)
定数以外の変数を定義する事が出来る(インターフェイスは定数のみ定義可能=暗黙的にfinalになる)
 

(1-5) 抽象クラスのサンプルプログラム

抽象クラスを用いたサンプルプログラムです。抽象クラス「Fruits」を3つのサブクラス「Strawberry」(苺)、「Grape」(ぶどう)、「Banana」(バナナ)クラスがそれぞれ実装しております。
mainメソッドの中では、フルーツの原産地を引数にインスタンスを作り、それぞれのサブクラスの「color()」メソッドでメッセージを出力しています。

public class AbstractTest {
        public static void main(String args[]) {
                Fruits obj[] = {new Strawberry("栃木"), new Grape("山梨"), new Banana("インドネシア")};
                for(Fruits o: obj) {
                        o.color();
                }
        }
}
abstract class Fruits {
        public abstract void color();
}
class Strawberry extends Fruits {
        private String origin;
        public Strawberry(String origin) {
                this.origin = origin;
        }
        public void color() {
                System.out.println("「"+origin+"」産のイチゴは赤くて美味しいです");
        }
}
class Grape extends Fruits {
        private String origin;
        public Grape(String origin) {
                this.origin = origin;
        }
        public void color() {
                System.out.println("「"+origin+"」産のブドウは紫色で美味しいです");
        }
}
class Banana extends Fruits {
        private String origin;
        public Banana(String origin) {
                this.origin = origin;
        }
        public void color() {
                System.out.println("「"+origin+"」産のバナナは黄色で美味しいです");
        }
}

(図151)プログラム実行例

目次にもどる

(1-6) 備考:abstractメソッドの制約

(ルール①)
staticメソッドをabstractメソッドとして定義できない(→staticはインスタンス化せずとも共有されてしまい、抽象メソッドを全て実装したらインスタンス化できる、という抽象クラスのルールと相反するから?)

(ルール②)
privateなメソッドをabstractメソッドとして定義できない(→これは何となく納得ですね。abstractメソッドを実装する場合はクラス外でも使うので、相反する事が理解できます)
 

Adsense審査用広告コード


Adsense審査用広告コード


-Java

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

クッキーとは?JSPでCookieを保存&取得するサンプルプログラムと代表的なメソッド紹介

(1) セッションとは (2) クッキーとは  (2-1) 概要  (2-2) サンプルプログラム   (2-2-1) 概要&画面遷移   (2-2-2) HelloCookie.jsp   (2-2 …

Linuxサーバ(CentOS6)にEclipse(OXYGEN)をインストールする

0.目次 (1) JDKの概要  (1-1) JDKの種類  (1-2) JDKのバージョン(2018年2月時点) (2) JDKのインストール  (2-1) wget コマンドでJDK の rpm …

Javaのswitch-case文の構文や使い方を紹介+UFOキャッチャーの座標移動プログラムも紹介

<目次> (1) Javaのswitch-case文の構文や使い方を紹介  (1-1) switch-caseの構文  (1-2) else-if文との比較 (2) サンプルプログラムの紹介  (2- …

WindowsのcmdからJavaファイルを作成・コンパイル・実行する方法

“Windows”の「コマンドプロンプト」からJavaファイルを作成・コンパイル・実行する方法について記述します。今回の操作は全てコマンドラインインターフェイスから実施いたしま …

Javaのポリモフィズムのメリットや例をご紹介(サンプルプログラムあり)

<目次> (1) Javaのポリモフィズムのメリットや例をご紹介  (1-1) ポリモフィズムとは?  (1-2) サンプルプログラム  (1-3) ポリモフィズムのメリット  (1-4) 参考:ポリ …

  • English (United States)
  • 日本語
Top