Semoga tidak terlalu akademik ...
Katakanlah saya membutuhkan angka nyata dan kompleks di perpustakaan SW saya.
Berdasarkan hubungan is-a (atau di sini ), bilangan real adalah bilangan kompleks, di mana b di bagian imajiner bilangan kompleks hanyalah 0.
Di sisi lain, implementasi saya akan menjadi, bahwa anak memperpanjang orangtua, jadi pada orangtua RealNumber saya akan memiliki bagian nyata dan anak ComplexNumber akan menambahkan seni imajiner.
Juga ada pendapat, bahwa warisan itu jahat .
Saya ingat seperti kemarin, ketika saya belajar OOP di universitas, profesor saya berkata, ini bukan contoh yang baik dari warisan karena nilai absolut dari keduanya dihitung secara berbeda (tetapi untuk itu kami memiliki metode kelebihan muatan / polimorfisme, kan?) .. .
Pengalaman saya adalah, bahwa kita sering menggunakan warisan untuk menyelesaikan KERING, akibatnya kita sering memiliki kelas abstrak buatan dalam hierarki (kita sering memiliki masalah untuk menemukan nama karena mereka tidak mewakili objek dari dunia nyata).