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

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

関連記事

TwitterのAPIライブラリ(Twitter4j)でフォローを行う方法

<目次> (1) TwitterのAPIライブラリ(Twitter4j)でフォローを行う方法  (1-1) 構文  (1-2) サンプルプログラム (1) TwitterのAPIライブラリ(Twitt …

JavaのBigDecimalの使い方+初期化・四則演算・余り・累乗等の主要用途も紹介

<目的> (1) JavaのBigDecimalの使い方+初期化や四則演算・桁数設定等の主要用途も紹介  (1-1) 宣言の方法  (1-2) 代表的な用途(足し算・引き算・掛け算・割り算)  (1- …

Javaのenumとは?使い方や意味を様々な利用シーンでご紹介(if、for、switch他)

<目次> (1) Javaのenumとは?意味や用途を様々な利用シーンでご紹介   (1-1) enumとは?  (1-2) 構文(enumの定義)  (1-3) 様々なenumの使用例 (1) Ja …

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

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

double型で誤差が発生する件について+発生事例やサンプルプログラムも紹介

<目次> (1) double型では誤差が発生する事について  (1-1) double型は近似値を使用している  (1-2) double型の誤差の例 (1) double型で誤差が発生する件につい …

  • English (United States)
  • 日本語
Top