Developer Programmer
شنبه 25 آبان 1387, 13:28 عصر
فرض کنین یه کلاس به اسم Shape داریم و می خوایم دو تا متد واسه محاسبه محیط و مساحت رو تعریف کنیم و اجازه بدیم فرزندها خودشون اون متد رو override کنن.
1) با توجه به اینکه واسه محاسبه مساحت دایره، فقط به یه شعاع احتیاج داریم ، واسه مساحت مستطیل به طول و عرض و واسه مثلت، به ارتفاع و قاعده...آیا میشه متد مساحت رو در کلاس Shape بدون پارامتر تعریف کرد و اجازه داد کلاس فرزند (مثل Circle) خودش پارامترهای دلخواه رو کم و زیاد کنه ؟
2) آیا میشه بدنه متد Virtual رو خالی گذاشت و اجازه داد کلاس فرزند اونرو از اول بنویسه؟
class Shape
{
// non-primitive data type
public enum eColor
{
white = 1,
blue,
green,
red
};
//a private varible to read/write property color
private eColor fColor = eColor.white;
//constructor with a given color name
public Shape(eColor color)
{
fColor = color;
}
// overloaded constructor with default color name
public Shape()
{
fColor = eColor.white;
}
/*
protected virtual float Mohit();
protected virtual float Masahat();
*/
}
private void Form1_Load(object sender, EventArgs e)
{
Shape myShape = new Shape(Shape.eColor.red);
}
1) با توجه به اینکه واسه محاسبه مساحت دایره، فقط به یه شعاع احتیاج داریم ، واسه مساحت مستطیل به طول و عرض و واسه مثلت، به ارتفاع و قاعده...آیا میشه متد مساحت رو در کلاس Shape بدون پارامتر تعریف کرد و اجازه داد کلاس فرزند (مثل Circle) خودش پارامترهای دلخواه رو کم و زیاد کنه ؟
2) آیا میشه بدنه متد Virtual رو خالی گذاشت و اجازه داد کلاس فرزند اونرو از اول بنویسه؟
class Shape
{
// non-primitive data type
public enum eColor
{
white = 1,
blue,
green,
red
};
//a private varible to read/write property color
private eColor fColor = eColor.white;
//constructor with a given color name
public Shape(eColor color)
{
fColor = color;
}
// overloaded constructor with default color name
public Shape()
{
fColor = eColor.white;
}
/*
protected virtual float Mohit();
protected virtual float Masahat();
*/
}
private void Form1_Load(object sender, EventArgs e)
{
Shape myShape = new Shape(Shape.eColor.red);
}