継承はもう使っている 〜WinFormsで理解するやさしい導入〜
継承という言葉を聞くと、
- 難しそう
- オブジェクト指向の山場
- 抽象的で分からない
と感じる人が多いです。
ですが安心してください。
みなさんは、すでに継承を使っています。
今回はそれに「気づく」ことが目的です。
目次
1. 継承とは何か
継承とは、
あるクラスの機能を引き継ぎながら、新しいクラスを作ること
です。
重要なのは、
- コピーではない
- 元の機能を持ったまま拡張する
という点です。
2. すでに書いている継承コード
WinFormsで必ず見ているこのコード。
public partial class Form1 : Form
この「: Form」が継承です。
意味はこうです。
Form1 は Form の機能を引き継いでいる
だから、
- ウィンドウとして表示できる
- ボタンを配置できる
- イベントが使える
のです。
継承を学んでいなくても、すでに使っています。
3. Buttonも継承している
Buttonも単独の存在ではありません。
内部では次のような関係になっています。
Button は Control を継承しています。
だから、
- 位置を持てる
- サイズを持てる
- Clickイベントがある
のです。
4. 自分たちでも作れる
では、自分で継承してみましょう。
public class MyButton : Button
{
}
これだけで、
- Buttonの機能を持った
- 新しいクラス
が作れます。
まだ何も追加していません。
それでも「Buttonとして」動きます。
これが継承です。
5. 少しだけ拡張してみる
public class MyButton : Button
{
public string Category { get; set; }
}
Buttonの機能はそのまま。

でも、
- 自分専用のプロパティ
を追加できます。
これが
「引き継ぎながら拡張する」
という意味です。
6. 今はここまでで十分
継承にはさらに
- virtual
- override
- base
といった仕組みがあります。
ですが、今はやりません。
今理解してほしいのは、
✔ 継承は特別なものではない
✔ もう使っている
✔ クラスが安定していれば怖くない
ということです。
まとめ
- Form1はFormを継承している
- ButtonもControlを継承している
- 私たちも作れる
- 難しい単元ではない
継承は「新しい山」ではありません。
クラスの理解が一本につながる瞬間です。
using System;
using System.Windows.Forms;
namespace HelloWorld
{
// Formクラスを継承した画面クラス
public partial class Form1 : Form
{
// Form1が作られたときに実行されるコンストラクタ
public Form1()
{
// デザイナーで配置した画面部品を初期化
InitializeComponent();
// MyButtonクラスからボタンを作成
MyButton myButton = new MyButton();
// このフォームを親にする(画面に表示される)
myButton.Parent = this;
// ボタンに表示する文字
myButton.Text = "私のボタン";
// MyButtonで追加された独自プロパティ
myButton.Category = "カテゴリがつかえたよ!!";
// ボタンのClickイベントにHelloButtonCliekedメソッドを登録
// → ボタンが押されるとHelloButtonCliekedが呼ばれる
myButton.Click += HelloButtonClieked;
}
// ボタンがクリックされたときに実行されるイベント処理
private void HelloButtonClieked(object sender, EventArgs e)
{
// ラベルの文字を変更
helloLabel.Text = "Hello, World!";
}
}
}
訪問数 36 回, 今日の訪問数 36回



ディスカッション
コメント一覧
まだ、コメントがありません