สมมติว่าเรามี 3 คลาสคือ Vehicle, FourWheeler และ Car คลาส Vehicle เป็นคลาสพื้นฐาน FourWheeler สืบทอดจาก Vehicle และ Car สืบทอดจาก FourWheeler คลาส Vehicle มีเมธอด vehicle() พิมพ์ 'I am a vehicle' FourWheeler มี fourWheeler() พิมพ์ 'I have four wheels' Car มี car() พิมพ์ 'I am a car' เนื่องจากเป็น multi-level inheritance เราจึงเข้าถึงเมธอดของคลาสบรรพบุรุษทั้งหมดจากออบเจกต์ Car เราเรียกเมธอดทั้งหมดและพิมพ์ผลลัพธ์
หากเรียกเมธอดตามลำดับ car(), fourWheeler(), vehicle() ผลลัพธ์จะเป็น:
I am a car I have four wheels I am a vehicle
ขั้นตอนการแก้ปัญหา
- สร้างคลาส Vehicle:
- เมธอด vehicle() พิมพ์ "I am a vehicle"
- สร้างคลาส FourWheeler สืบทอดจาก Vehicle:
- เมธอด fourWheeler() พิมพ์ "I have four wheels"
- สร้างคลาส Car สืบทอดจาก FourWheeler:
- เมธอด car() พิมพ์ "I am a car"
ตัวอย่างโค้ด
#include <iostream> using namespace std; class Vehicle{ public: void vehicle(){ cout<<"I am a vehicle\n"; } }; class FourWheeler : public Vehicle{ public: void fourWheeler(){ cout<<"I have four wheels\n"; } }; class Car : public FourWheeler{ public: void car(){ cout<<"I am a car\n"; } }; int main(){ Car obj; obj.car(); obj.fourWheeler(); obj.vehicle(); return 0; }
อินพุต
Car obj; obj.car(); obj.fourWheeler(); obj.vehicle();
เอาต์พุต
I am a car I have four wheels I am a vehicle