タグ別アーカイブ: 継承

VB.netのクラスで覚えたことを書いておく


VB.netのクラスで覚えたことを書いておく

インターフェース
よくわからないが、一言で言えば、派生クラスのオブジェクトをメソッドの引数として使える(意味があっているかわからないが)
だから、クラスのメソッドを派生クラスごとに作成する必要がなくなる。
ではどんな用途に向いているのか?
実際どんなときに使えるのかがよくわからない。
あまり使わないが使えると便利なのでできるだけ使うようにしておくと良いと思う。

・抽象クラスとは、基底クラスでオブジェクトは作れない。抽象メソッドがあると派生クラスもオブジェクトは作れない。
つまり、派生クラスで使用することが前提となる。
なので
オーバーライドする必要がある。

・継承について
コンストラクタ(Newメソッド)が派生クラスにある場合、派生クラスと基底クラスも実行されるので、注意が必要
例えば基本クラスのNewにプリント文があるとして、派生クラスのNewにもプリント文がある。
なんとなく、派生クラスのNewだけが実行されると思ってしまうが、結局全部実行される。これはコンストラクタだけの問題。
継承でもオーバーライドは使える。てっきり継承では使えず、抽象クラスで使うものかと思ってしまった。

基底クラスにOverridable 関数
派生クラスにOverrides 関数とする。
そうすると派生クラスで書いた関数が基底クラスの関数を上書きする

継承クラスの考え方は抽象クラスとほぼ同じなので、
抽象クラスを使いつつ、インターフェースとして活用できる道を考えてみる

文章で説明されてもすぐにイメージできないし理解できない。そうなると使えるようになるわけではないので、実際に実行して理解を深めるほかない。
動かしているうちになんとかわかってくるものである。
実際に使うときは、ほとんど継承の基本的な部分しか使いこなせない。
しかし、知識として知っていないとサンプルコードが読めなくなる。

事例
VB.netコンソールプロジェクトの例 実行はCtr+F5でコンソールが出力される。
実行だけではすぐに消える

Module Module1
‘VB.net 継承クラスと抽象クラスの書き方2018年12月22日勉強中
‘(1)継承クラス
‘ 書き方
‘ オーバーライドで基底クラスと派生クラスの宣言が異なる
‘ 基底クラス:オーバーライドはOverridable
‘  派生クラス:Inheritsを書いてオーバーライドOverrides
‘ コンストラクタnewはオーバーライドされないので基底クラスと派生クラスのコンストラクタNewが実行される
‘(2)抽象クラス