Trang chủ » Bài 4 – Kế thừa trong OOP (Phần 2)
Lập trình hướng đối tượng

Bài 4 – Kế thừa trong OOP (Phần 2)

oop

Xin chào mọi người!

Hôm nay trời nắng gắt, lười mà không muốn gõ tay vào bàn phím nữa :'(. Thế là sắp hết cái mùa hè nóng nực, muốn cháy da cháy mỡ này rồi, vậy mà mấy kế hoạch đi chơi vào hè của mình chả có cái nào đi được cả, haizzz. Liệu bạn đã có 1 mùa hè thật ý nghĩa?

Luyên thuyên vui thôi, mình xin trở lại vấn đề. Ở bài trước, mình đã giới thiệu về Kế thừa trong OOP. Ở phần này, mình sẽ tiếp tục với Phần 2 – Kế thừa trong OOP.

3. Chế độ truy xuất

Ở từ đầu bài, mình có nhắc đến về public, nhưng không có nói sâu. Chắc những bạn học series này sẽ rất thắc mắc phải không? Mình đợi đến bài này để nói rõ hơn về các từ khoá public, private, protected.

Hãy tưởng tưởng 3 từ khoá trên giống như 3 anh em trong 1 ngôi nhà (class) vậy. 3 người có 3 tính cách khác nhau:

ba-anh-em
Chỉ là ví dụ thôi nhé, mình không có ý gì với 3 anh này đâu :v
  • Người anh cả public rất phóng khoáng. Anh ấy luôn đón tiếp khách nồng nhiệt, và đối xử với người thân, dòng họ và người trong nhà rất tốt. Hễ cần mượn gì là anh ấy đều cho mà không ý kiến gì cả.
  • Người anh thứ private thì lại rất “tự kỉ”. Ngoại trừ người trong nhà, thì không bao giờ trò chuyện với bất kì ai, kể cả khách hay dòng họ tới thăm.
  • Người em út protected lại hơi ki bo. Em ấy không bao giờ cho người ngoài mượn thứ gì cả, chỉ tin tưởng người thân, dòng họ, người trong nhà thôi. Khách vào nói chuyện với em ấy hơi bị khó khăn.

Tất nhiên đây chỉ là tưởng tượng, giúp bạn có 1 cái nhìn thật thân thiện, dễ thương về OOP. Qua bài tưởng tượng trên, ta sẽ đi tới khái niệm về chế độ truy xuất, với “khách” là truy xuất từ bên ngoài, “người thân, dòng họ” là truy xuất từ lớp được thừa kế, “người trong nhà” là truy xuất trong class:

  • Public: các thuộc tính, phương thức được truy xuất tới mọi nơi.
  • Private: các thuộc tính, phương thức chỉ được truy xuất trong chính class của nó.
  • Protected: các thuộc tính, phương thức chỉ được truy xuất trong class của nó và những class mà nó được kế thừa.

Cách khai báo các chế độ truy xuất

class <tên class>
{
<chế độ truy xuất>:
  <thuộc tính, phương thức>
};

Trong một lớp ở C++, ta phải khai báo ít nhất một chế độ truy xuất. Nếu không khai báo chế độ truy xuất nào, nó sẽ tự ngầm hiểu là private. Các bạn cần lưu ý điều này trong lúc viết code nhé!

4. Ghi đè (Override)

Cùng tưởng tượng, 1 lớp Người cổ đại có tập tục “ăn bằng tay”, lớp Người hiện đại kế thừa từ lớp Người cổ đại, tất nhiên tập tục “ăn bằng tay” cũng được kế thừa. Tuy nhiên thời đại môđen mà lại đi ăn bằng tay thì hơi… ngộ, vì vậy ta cần phải sửa lại tập tục “ăn bóc” thành ăn bằng “đũa muỗng” cho hợp thời. Đó chính là Ghi đè (Override) trong OOP.

Cùng xem 1 ví dụ sau nhé:

class NguoiCoDai
{
public:
  void An()
  {
    cout << "Ho an bang tay";
  }
};

class NguoiHienDai : public NguoiCoDai
{
public:
  void An()
  {
    cout << "Ho an bang muong dua";
  } 
}; 

void main() 
{ 
  NguoiCoDai nguoi1; 
  NguoiHienDai nguoi2; 
  nguoi1->An(); // Ăn bằng tay
  nguoi2->An(); // Ăn bằng muỗng đũa
}

Ngoài ra, ta có định nghĩa phương thức virtual nhưng ở những bài sau, mình sẽ nói rõ hơn.

Trên đây là bài viết về Kế thừa trong OOP (Phần 2). Cảm ơn các bạn đã chú ý theo dõi! Hẹn gặp lại ở những bài tiếp theo nhé~

Tags

About the author

Võ Hoài Sơn

Tính tình bất định
Chọc vào là bịnh
Rất yêu lập trình
Luôn code hết mình
Mình hiện đang là sinh viên của trường ĐH Khoa học tự nhiên TPHCM. Bản thân rất thích code, kiêm luôn cả mần thơ nên thường hơi hâm hâm dở dở. Ngoài ra chém gió, chém chuối, chém trái cây các kiểu cũng là sở trường của mình. Rất mong được làm quen với các bạn :D

Add Comment