PDA

View Full Version : سوال: در مورد مفهوم ارث بری از کلاسی شامل سازنده



sAsAn.K
شنبه 26 آذر 1390, 14:35 عصر
سلام دوستان ، حین درس شی گرا از استاد سوال پرسیدم ، اول نمیدونست ، ساعت بعدش جواب داد ، منطقی هم به نظر اومد ولی من تست کردم نشد ، حالا اگه کسی بلده راهنمایی کنه ممنون میشم .

ببینید به طور مثال ما کد زیر رو داریم :


class A
{
public A(int x,int y)
{
...
}
}


class B:A
{
public B(string a,string b)
{
...
}
}

هنگام استفاده از سازنده ی فرزند ، ابتدا سازنده ی پدر اجرا میشه ، حالا سوال من اینه که وقتی سازنده ی فرزند اجرا میشه چجوری باید به سازنده ی پدر پارامتر داد ؟ و آیا حتما موقع اجرای سازنده ی فرزند ، قبل از اون سازنده ی پدر ایجاد میشه ؟ در ضمن ، جلوی سازنده ی فرزند باید دقیقا بعد از : که میزاریم چه چیزی نوشته بشه وقتی که سازنده ی پدر پارامتر داره ؟

ممنون میشم راهنمایی کنید .

AMIBCT
شنبه 26 آذر 1390, 14:58 عصر
در تابع B دستور MyBase.New را صدا بزنید تا سازنده‌ی بالایی صدا زده بشه
بعدش هر چیز اضافه‌ای که خواستید بنویسید

ویرایش:
برای C#‎ این طوری بنویسید:

class aa {
public aa() {
Console.WriteLine("a constructor");
}
}

class bb : aa {
public bb()
: base() {

}
}

sAsAn.K
شنبه 26 آذر 1390, 15:01 عصر
پس قضیه ی این کد چیه که جلوی سازنده ی B مینویسیم ؟ :

public B(string a,string b):base(x,y)

sAsAn.K
شنبه 26 آذر 1390, 18:07 عصر
در تابع B دستور MyBase.New را صدا بزنید تا سازنده‌ی بالایی صدا زده بشه
بعدش هر چیز اضافه‌ای که خواستید بنویسید

ویرایش:
برای C#‎ این طوری بنویسید:

class aa {
public aa() {
Console.WriteLine("a constructor");
}
}

class bb : aa {
public bb()
: base() {

}
}

میدونم عزیز ، اگه سازنده ی aa آرگومان داشته باشه و بخوایم فراخوانی کنیم چطور ؟

linux
شنبه 26 آذر 1390, 18:49 عصر
class A
{
public A(int a,string b)
{
MessageBox.Show(string.Format("Class A Constractor:a={0},b={1}",a,b));
}
}

class B:A
{
public B(int a):base(a,"Class B")
{
MessageBox.Show("Class B Constarctor");
}
}
B b = new B(100);
این مثال را اجرا کنید تا همه چیز روشن شود