タイトル一覧   関連タグ: Win C#
タグ:Win C# タイトル:親クラスのコンストラクタに子クラスのコンストラクタを!
1
1:  お名前:もっちり。 2003/08/27 9:43:16

親クラスのコンストラクタの中に、子クラスのコンストラクタを作りたいと思っています。
宣言する方法を調べたのですが、良く理解できないものばかりなので、教えていただけないでしょうか。

public class A //親クラス
{
public A()
{
.......
}
public class B : A //子クラス
{
public B() : base()
{
.......
}

今は、この書き方でやっています。ですが、base()が何のために使うのかが分かりません。
プログラムで行いたいことは、SQLサーバーに接続して、データの読み込みです。
親クラスで、SQLサーバーに接続します。
子クラスでは、データベース接続に必要な情報を親クラスに渡したいと思っています。

2:  お名前:アイライト 2003/08/27 10:05:52

こんにちは、アイライトです。

baseは親クラスの、メソッドを呼び出すためにあります。
ですので、
BクラスがNewされたとき、Aクラスのコンストラクタが
呼ばれるようになります。
ところで、やっぱりAクラスのコンストラクタが呼ばれて
その次にBクラスのコンストラクタが動くんですよね。

メッセージボックスでも入れて、確認するといいかもしれません。

3:  お名前:もっちり。 2003/08/27 10:10:49

ありがとうございます。

まずは、親クラスAのコンストラクタが呼ばれてから、子クラスBが動くようにします。
4:  お名前:アイライト 2003/08/27 10:13:56

ちょっと疑問に思った点がありましたので
確認してみました。

baseを設定しなくても、やっぱり Aのコンストラクタ
Bのコンストラクタって動作しますね。
そうじゃないとおかしいですから。
さて、baseってどんなときに使うんだろう?

それも今調べました。
別のコンストラクタを呼ぶときに使うんですね。

public class ClassA
{
  public ClassA()
  {
  System.Windows.Forms.MessageBox.Show("ClassA");
  }
    
  public ClassA(string Message)
  {
  System.Windows.Forms.MessageBox.Show(Message);
  }    
}

public class ClassB : ClassA
{
  public ClassB() : base("BaseB")
  {
  System.Windows.Forms.MessageBox.Show("ClassB");
  }
}

期待通りの動作をします。
BaseB、ClassBってどうでしょうか?
5:  お名前:もっちり。 2003/08/27 10:32:20

baseの使い方、納得しました。
参考にさせていただきながら、引き続き開発していきます。
納得したつもりでも、また「はて?はてはてはて????」と思うことが出てくると思いますので、よろしくお願いします。
ありがとうございました。
6:  お名前:韓国コピー 2017/09/11 22:36:07

★弊社は「信用第一」をモットーにお客様にご満足頂けるよう
★全物品運賃無料(日本全国)
★不良品物情況、無償で交換します.
★税関没収する商品は再度無料で発送します
韓国コピー http://www.watchsjp.com/brand-183.html
1
お名前
メッセージ
次回のために入力情報を記録