ببینید من نگفتم خللی در شی گرایی ایجاد میکنه .گفتم جاوا کاملا و محض شی گرا نیست به این جهت که داده اولیه داره. و از خود سازندگانش هم بپرسید بهتون میگن این هارو از سی به ارث برده چرا ؟ چون شما اینطور لازم نیست برای کار با یک عدد به اندازه یک شی کامل فضا مصرف کنید . یا به اندازه یک شی کامل موقع پاک کردنش از حافظه به GC فشار بیارید چون اصلا GC کاری به این انواع اولیه نداره!این بخاطره اینه که جاوا میتونست خیلی جلوتر از امثال Ruby کاملا شی گرا باشه در حد زبان نه API که شما فرمودین . منتها جاوا یک زبان و یک پلتفرم گستردست که از یک چیپ که اینترپرتر جاوا رو به شکل سخت افزاری مستقیما اجرا میکنه تا سوپر کامپیوتری که کلی منابع سخت افزاری داره باید پابه پای زبان محلی پذیرفته شده سیستم ها یعنی C و CPP کار کنه .نتیجه : طراحان جاوا و کاربرانش مجبورند از این انواع داده اولیه استفاده کنند . و این نه تنها ضعفی نیست بلکه نشون میده طراحی خوب یک زبان و یک پلت فرم اینطور نیست که شما همه چیز یک تئوری و مفهوم رو در عمل پیاده کنید .همین رهیافت رو CPP دنبال میکنه منتها در CPP علاوه بر انواع اولیه متنوع(که وابسته به پلت فرم هستن بر خلاف جاوا ) یعنی داده ها رفتار هم شکلی شی گرا میتونه نداشته باشه یعنی Global Function . این یعنی اینکه این زبان چون اصول یک محیط شی گرا رو زیر پا گذاشته پس زبانی هست کاندید کنارگذاشتن ؟ خیر این زبان یبان اول برنامه نویسان دنیاست و خود جاوا رو هم باش نوشتن .
در مورد Autoboxing and Unboxing یه ویژگی کامپایل تایمه و هنوز هم داستان تبدیل Warper ها در بایت کد وجود داره (و آورهد ناشی از اون موقه رانتایم!که مهم نیست!) یعنی :
میشه :
Integer i = new Integer(0);
اصلا چرا باید به جای :
بنویسم :
int foo = 0;
Integer integer = a;
// Simple Unboxing
int a = integer;
که مسئله مهمی نیست.
میان سطح یعنی چی؟ اون جا لینکش کو؟ بدین تا بشه بررسی کرد چی گفته!؟
C++: TheCompleteReference ThirdEdition
HerbertSchildt
هر کدومش یک صفحه مطلب می تونه باشه.
بپرسید سوال هاتون رو به شکل سوال و جواب عمل کنیم بهتره.
سوالی ندارم فقط خواستم توضیح بیشتری بدین تا دنباله مطالب رو ادامه بدیم.