تا به اینجا دیدیم که چطور کپسولهسازی و انتزاع (Abstraction) در توسعه و نگهداری یک مجموعه کد بزرگ به کمک ما میآیند.
اما یک مشکل شایع دیگر هم در طراحی شی گرا وجود دارد: اشیا اغلب بسیار شبیه به هم هستند و منطق مشترکی دارند. اما کاملا یکسان نیستند.
پس چطور از منطق مشترک دوباره استفاده کنیم -بدون اینکه دوباره آنها را کدنویسی کنیم- و منطق منحصر به فرد را به کلاس دیگری انتقال دهیم؟ وراثت راهی برای رسیدن به این هدف است. وراثت یعنی شما یک کلاس (فرزند) را از یک کلاس دیگر (پدر) بگیرید. بنابراین در اینجا یک سلسله مراتب تشکیل میدهیم.
کلاس فرزند تمام متدها و propertyهای کلاس پدر (بخش مشترکِ منطق) را به ارث برده و مجددا استفاده میکند -بدون نیاز به نوشتن دوباره آنها- و میتواند منطق خاص خود (بخش منحصر به فردِ منطق) را هم داشته باشد و پیادهسازی کند.
به عنوان مثال:
اگر در برنامهای معلمهای خصوصی و عمومی و همچنین افراد دیگری مانند دانشآموزان داشته باشد، ما میتوانیم این سیستم را به صورت سلسلهمراتبی و با استفاده از وراثت پیادهسازی کنیم. به این صورت که هم معلم و هم دانشآموز یک نوع شخص "Person" هستند و بنابراین میتوانند از آن ارثبری کنند.
در این روش، هر کلاسی فقط آنچه را نیاز دارد اضافه میکند و در مورد منطقِ مشترک از پیادهسازیهای کلاس پدر استفاده میکند -و خود مجددا آن را پیادهسازی نمیکند-