PDA

View Full Version : وراثت چندگانه کلاس ها در سی شارپ



ghazal_mcn
شنبه 16 آذر 1392, 17:43 عصر
سلام
چطور میشه در سی شارپ یک کلاس از چند کلاس به ارث ببره..و اینکه کلاس به ارث برنده به چ قسمت های کلاسی ک به ارث برده دسترسی داره؟!

plus
شنبه 16 آذر 1392, 17:57 عصر
وراثت چند گانه در #C تعریف نشده و بجای اون از inteface استفاده میشه.به معنی که یک کلاس میتونه از یک کلاس دیگه و هر تعداد interface دیگه ارث بری کنه.

ghazal_mcn
شنبه 16 آذر 1392, 18:00 عصر
میشه یه مثالی بزنین ک چطور میشه؟

plus
شنبه 16 آذر 1392, 18:09 عصر
این مثال رو نگاه کنید.البته به زبان جاوا هست اما فکر میکنم مقصود رو میرسونه:

public interface Foo {
int doFoo();
}

public interface Bar {
long doBar();
}

public class Baz {
String doBaz() {
return "This is baz";
}
}

public class FooBar extends Baz implements Foo, Bar {
public long doBar() {
return 123;
}
public int doFoo() {
return 456;
}
}

// Accepts interface Bar implementing objects
public void doSomething(Bar b) {
System.out.println(b.doBar() * 10);
}

// Accepts interface Foo implementing objects
public void doSomethingOther(Foo f) {
System.out.println(f.doFoo() / 10);
}

// Accepts objects of class Baz and subclasses
public void doMore(Baz b) {
System.out.println(b.doBaz());
}

void bla() {
FooBar fb = new FooBar();

// FooBar can act as Foo, Bar, and Baz
doSomething(fb);
doSomethingOther(fb);
doMore(fb);
}

علی متقی پور
شنبه 16 آذر 1392, 21:09 عصر
با سلام

بدلیل پیچیدگی های فراوان وراثت چندگانه این مقوله از سی شارپ حذف شده. و اصولا سی شارپ از چنین وراثتی پشتیبانی نیمکنه. در اکثر موارد هم اصولا نیازی به استفاده از وراثت چند گانه وجود نداره و در صورتیکه واقعا نیاز دارید شی شما ویژگی چندین شی متفاوت رو به ارث ببره بهتره این اشیاء پایه رو بصورت اینترفیس پیاده سازی کنید.
اینترفیس های مشابه کلاس های ابسترک هستن که بنوعی با هدف قانون گذاری برای کلاس های مشتق شدشون نوشته میشن