Rainbow Engine

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

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

関連記事

JDKのインストール手順+どれを選択すれば良いか?&確認の方法は?をご紹介

  <目次> (1) JDKのインストール手順+どれを選択すれば良いか?&確認の方法は?をご紹介  (1-0) STEP0:JDKのインストールでどれを選択すれば良いか?  (1-1) ST …

JavaでJSON形式のデータから値を抽出する方法+代表的なエラー対処も紹介

(0)目次&概説 (1) 記事の目的  (1-1) 目的 (2) JSON形式の概要  (2-1) JSON形式とは?  (2-2) JSON形式のフォーマット (3) JSON形式の抽出方法・事前準 …

JSP/Servletでログイン・ログアウト機能を作成する方法

<目次> (1) JSP/Servletでログイン・ログアウト機能を作成する方法  (1-1) ログイン   (1-1-1) 概要・構文   (1-1-2) サンプルプログラム  (1-2) ログアウ …

サーバサイドJava(JSP&サーブレット)のFORM認証を用いたログイン画面の開発

(0)目次&概説 (1) サーバー側JavaのFORM認証  (1-1) 認証の種類  (1-2) FORM認証の特徴  (1-3) FORM認証の実装概要 (2) FORM認証の実装手順  (2-1 …

Tomcatの起動時のエラー「アドレスは既に使用中です」や「必要な幾つかのポートがすでに使用中です」の対処方法

<目次> (1) Tomcatの起動時のエラー「アドレスは既に使用中です」や「必要な幾つかのポートがすでに使用中です」の対処方法  (1-1) 発生状況  (1-2) 原因  (1-3) 対処方法 ( …

  • English (United States)
  • 日本語
Top