PDA

View Full Version : چگونه امکان دارد شی کلاس پایه را به شی کلاس مشتق نسبت دهیم؟



هم دانشگاهی
شنبه 25 آذر 1391, 09:58 صبح
چگونه امکان دارد شی کلاس پایه را به شی کلاس مشتق نسبت دهیم ولی عکس آن امکان ندارد ؟!


class A {}
class B: A{}

class Client{
public static void Main (){
// Static type Dynamic type
A x; // A -
B y; // B -

x = new A(); // A A TRIVIAL
y = new B(); // B B TRIVIAL

x = y; // A B OK - TYPICAL

y = new A(); // B A Compile time ERROR
// Cannot implicitly convert type 'A' to 'B'.
y = x; // B B Compile time ERROR !
// Cannot implicitly convert type 'A' to 'B'.
}
}

Mahmoud.Afrad
شنبه 25 آذر 1391, 12:39 عصر
اشتباه متوجه شدید. شئ کلاس مشتق را می توان به شئ کلاس پایه نسبت داد(چون کلاس مشتق شده، از کلاس پایه ارث بری کرده)
اما شئ کلاس پایه را نمی توان به شئ کلاس مشتق نسبت داد (چرا که ممکن است کلاس مشتق شده دارای خصوصیات و متدهای کمتر و متفاوتی باشد)(برخلاف حرف شما)
پس با این حساب طبق مثال شما شئ y از جنس کلاس B(کلاس مشتق) را می توان به شئ x از جنس کلاس A(کلاس پایه) نسبت داد.(x = y;)
اما شئ x را نمی توان به شئ y نسبت داد(X y = x;)