0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

オブジェクト指向5

Posted at

はじめに

 【オブジェクト指向】  【Java = ジャバ】言語で考えてみました。

以下を参照。

スーパークラス

/**
  * 抽象クラス
  *   ⇒ 継承する際は、影響を設定させるため、抽象メソッドを定義
  */
abstract class Person {

     // フィールド
     private int age;      //年齢
     private String name;  //名前

     // コンストラクタ
     public Person(int age, String name) {
         this.age = age;
         this.name = name;
     }


     // 抽象メソッドの宣言
     //  ⇒  サブクラスに必ず同じメソッド名の再定義を行わせる。

     // getterメソッド
     /* 影響を取得する抽象メソッド */
     public abstract long getInfluence();


     // setterメソッド
     /* 影響を取得する抽象メソッド */
     public abstract void setInfluence(long influence);



     // getterメソッド
      /* 年齢を取得するメソッド */
     public int getAge() {
         return age;
     }

     // setterメソッド
     /* 年齢を設定するメソッド */
     public void setAge(int age) {
         this.age = age;
     }


     // getterメソッド
     /* 名前を取得するメソッド */
     public String getName() {
         return name;
     }

     // setterメソッド
     /* 名前を設定するメソッド */
     public void setName(String name) {
         this.name = name;
     }

     //Personクラスのdisplay
     public void display() {
         System.out.println("年齢は " + age);
         System.out.println("名前は " + name);
     }

}


サブクラス

/**
  * 具体的なクラス
  */
public class Influencer extends Person {

     // フィールド
     private long influence;  //影響

     // コンストラクタ
     public Influencer(int age, String name, long influence) {

         /* スーパークラスの age と name 引数のコンストラクタを呼び出す */
         super(age, name);
         this.influence = influence;
     }


     //抽象メソッドの実装
     @Override
     public long getInfluence() {
         return this.influence;
     }

     @Override
     public void setInfluence(long influence) {
         this.influence = influence;
     }


     /* @override(オーバーライド) は アノテーション
      *  
 ⇒ 上記を記述することで、スーパークラスに同名のメソッドがなければコンパイラがエラーメッセージ出す。
      */


     //オーバーライド
     @Override
     public void display() {

          //スーパークラスのメソッドを呼び出す
          super.display();

          //追加定義部分
          System.out.println("影響は " + influence);



     }

}



インスタンス

/**
  *  メインクラス
  */
  public class StartClass {
     public static void main(String[] args) {
         System.out.println("PGM:START");

         //Influencerクラスを元にインスタンス化
         Influencer y =new Influencer( 31, "則夫", 990000L);

         //Personクラスでオーバーライドしたdisplay
         y.display();

         //Personクラスのsetterメソッド
         y.setAge(17);
         y.setName("玉姫");

         Influencerクラスのsetterメソッド
         y.setInfluence(1000000L);

         //Personクラスでオーバーライドしたdisplay
         y.display();

     }

}



実行結果

PGM:START

年齢は 31
名前は 則夫
影響は 990000

年齢は 17
名前は 玉姫
影響は 1000000


オブジェクト指向1

参考文献

Java関連情報サイト様

【JavaDrive】抽象クラスとインターフェース
https://www.javadrive.jp/start/abstract/


【Java】抽象メソッド・抽象クラス
https://zenn.dev/miya_akari/articles/dc58d4a0cb43fe


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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?