抽象クラス・メソッド(C#)

1.概要

(1)抽象クラス
  ①インスタンスが生成できない
  ②継承することが前提
 (2)抽象メソッド
  ①メソッド内の処理を書かずに、定義だけ
  ②派生先でメソッド内の処理を書く

2.例

(1)抽象クラス


abstract class Ball
{
 protected int size;
 //抽象クラスなのでコンストラクタでインスタンスは生成できないよ!
 //使う場合は派生してね!つまりは、中身はあるけど実態がつくれない状態。
 public Ball(int size){this.size  = size;}
 public int Size{get{return this.size;}}
}

(2)抽象メソッド

//抽象クラス
abstract class Ball
{
 protected int size;
 protected int color;
 public Ball(int size, int color)
 {
   this.size = size;
   this.color = color;
 }
 //抽象メソッドは派生先で処理を書くから、ここではいらないよ!
 public abstract int Size{get;}
 //派生先で書き換えられる可能性がある場合、virtualにするよ。
 //書き換えなくても動作するように処理を書いておくよ。
 public virtual int Color{get{return this.color;}}
}
//派生先
class BasketBall: Ball
{
 public BasketBall(int size) : base(size){}
 //インスタンス生成時より、ワンサイズ小さいボールのサイズを返すよ!
 public override int Size{get{return this.size - 1;}}
 //このクラスで書かなくても良いよ。そのためのvirtualだよ。
 public override int Color{get{return this.color + 1;}}
}

 継承して使う前提だけど、処理はすでに書いておきたかったり、逆に処理も派生先で書いてほしかったりするときに使います。
 クラスは生成してインスタンス化できるけど、処理は派生先で書いてほしかったりするときにも使います。

いいなと思ったら応援しよう!