‫قوانین استفاده از annotation هابهمراه وراثت در جاوا

‫استفاده از annotations ها بهمراه وراثت در داخل زبان جاوا همیشه بعنوان یک معزل و پیچیدگی برای برنامه نویس ها بوده است. بعضی وقت ها برنامه نویس ها فرضیاتی برای خودشان در نظر میگیرند که ممکن است در زبان های دیگر وجود داشته باشند.

annotation inheritance integration in java

‫در اینجا به اینکه در داخل جاوا وراثت و انوتیشن به چه شکل با هم کارمیکنند توضیحاتی رو ارائه میدهیم:
‫۱- اگر یک انوتیشن بر روی یک کلاس قرار داده شود، اون فقط بر روی کلاس و قسمت های اون کلاس مثل متدها و فیلدها اعمال میشود. آن ها هرگز بر روی متدها و فیلدهای کلاس پدر اعمال نمیشوند (حتی اگر فرضا متد در داخل child class کلاس پدر رو override کرده باشد)

‫۲- در داخل یک کلاس همیشه انوتیشن گذاری بر روی اعضای اون کلاس (مثل متد، فیلد) بطور جداگانه بر روی انوتیشن خوده کلاس برتری دارند. فرضا متدهای کلاسی که با @WebService انوتیشن گذاری میشود، به حالت پیش فرض همگی نقش وب سرویس رو پیدا میکنند ولی اگر روی یکی از آن متدها @WebMethod گذاشته شود، این متد دیگر وب سرویس نیست و خاصیت وراثت انوتیشن کلاس دیگر بر روی آن اعمال نمیشود.

‫۳- اگر اینترفیسی توسط یک کلاس پیاده سازی شود، هیچوقت انوتیشن های اون به کلاس و اعضای اون کلاس (فیلد، متد) به ارث نمی رسد.

‫۴-کلاس های بچه انوتیشن های اعضای کلاس پدر (کلاس، متد، فیلد) (که private نیستند و override هم نشدن) را به ارث می برند.

‫۵- همیشه اعضای hidden (مثل فیلدهای و متدهای private و override نشده) در داخل وراثت نادیده گرفته میشوند!

Published by

mehdi

I'm a Passionate Software Developer and Team Leader