Điều gì xảy ra nếu bạn cố gắng truy cập một phương thức riêng của lớp cha từ lớp con của nó trong PHP?

Kế thừa là một trong bốn trụ cột của Lập trình hướng đối tượng (OOP). Kế thừa là hiện tượng một lớp con có thể kế thừa tất cả các thuộc tính và đặc điểm của lớp cha.  

Bạn có thể hiểu điều này với một ví dụ thực tế đơn giản. Hãy xem xét tấm gương của con người. Bạn thừa hưởng các tính năng đặc trưng từ lớp 'Con người', chẳng hạn như đi bộ, ngồi, chạy, ăn, v.v. Lớp ‘Humans’ kế thừa từ lớp ‘Mammal’, những tính năng đặc trưng này – làm cho lớp ‘Human’ trở thành lớp dẫn xuất của ‘Mammal’. Hơn nữa, lớp 'Động vật có vú' có các tính năng đặc trưng của nó từ một lớp khác - 'Động vật'. Điều này làm cho lớp 'Động vật có vú' trở thành lớp dẫn xuất của lớp 'Động vật';

Kế thừa trong PHP

Kế thừa trong PHP là một khái niệm OOP quan trọng và không thể bỏ qua. Hiểu tính kế thừa trong PHP là cần thiết để có cái nhìn tổng thể về khái niệm hướng đối tượng trong PHP

Kế thừa cung cấp cho bạn rất nhiều lợi ích giúp cho việc lập trình PHP thuận tiện hơn rất nhiều. Một lợi ích như vậy là khả năng sử dụng lại mã. Khả năng sử dụng lại cho phép bạn tạo mã sạch và việc sao chép mã được giảm xuống gần như bằng không. Sử dụng lại các mã hiện có mang lại nhiều lợi ích khác nhau. Nó tiết kiệm thời gian, chi phí, công sức và tăng độ tin cậy của chương trình. Hơn nữa, chương trình trở nên trực quan

PHP cung cấp chủ yếu ba loại kế thừa dựa trên chức năng của chúng. Ba loại này như sau

  • Thừa kế đơn. Kế thừa đơn là kiểu kế thừa cơ bản hoặc cơ bản nhất được cung cấp bởi PHP. Chỉ có một lớp cơ sở và một lớp con/lớp dẫn xuất trong một kế thừa duy nhất và lớp con được kế thừa trực tiếp từ lớp cơ sở
  • Kế thừa phân cấp. Đúng như tên gọi, kế thừa phân cấp áp dụng cấu trúc dạng cây, trong đó nhiều lớp dẫn xuất được kế thừa từ lớp cơ sở
  • Kế thừa đa cấp. Kế thừa đa cấp là kiểu kế thừa thứ ba được hỗ trợ trong PHP. Nó xảy ra ở các mức độ khác nhau. Ở đây, một lớp cơ sở được lớp dẫn xuất kế thừa, sau đó lớp dẫn xuất đó được kế thừa bởi các lớp dẫn xuất khác, v.v.

Bài viết này sẽ thảo luận chi tiết về tất cả các loại này, sau

Thêm một ngôi sao khác vào đánh giá hiệu suất của bạn

Học MIỄN PHÍ từ các chuyên gia trong ngành Bắt đầu học

Cú pháp kế thừa một lớp trong PHP

Mô tả bên dưới là cú pháp được sử dụng để mở rộng một lớp cơ sở trong PHP

lớp dẫn xuất_class_name mở rộng cơ sở_class_name {

// định nghĩa các hàm thành viên của

// lớp dẫn xuất ở đây

}

Từ khóa extends được sử dụng để định nghĩa lớp dẫn xuất hoặc lớp con trong PHP

  • dẫn xuất_class_name. Nó chỉ định tên của lớp dẫn xuất hoặc lớp con. Lớp con hay còn gọi là lớp con, kế thừa những đặc điểm, tính chất nổi bật của lớp cha. Có thể có một hoặc nhiều lớp dẫn xuất kế thừa từ cùng một lớp cơ sở tùy thuộc vào kiểu kế thừa được thực hiện. Có ba chế độ hiển thị được hỗ trợ trong PHP. Công khai, Riêng tư và Được bảo vệ, xác định cách lớp dẫn xuất sẽ kế thừa những gì

  • base_class_name. Nó chỉ định tên của lớp cơ sở hoặc lớp cha mà từ đó lớp con kế thừa các thuộc tính của nó. Lớp cơ sở còn được gọi là lớp cha vì tất cả các lớp được gọi là lớp dẫn xuất hoặc lớp con đều kế thừa các thuộc tính của chúng từ lớp cơ sở. Có thể có một hoặc nhiều lớp cơ sở trong một chương trình, tùy thuộc vào kiểu kế thừa. Chẳng hạn, trong kế thừa một cấp, sẽ có một lớp cơ sở cho một lớp con, nhưng trong kế thừa đa cấp, một lớp con có thể kế thừa từ hơn một lớp cơ sở ở nhiều cấp

Công cụ sửa đổi truy cập trong PHP

Công cụ sửa đổi truy cập (riêng tư, công khai hoặc được bảo vệ) được sử dụng trong định nghĩa của các hàm thành viên và thành viên dữ liệu của lớp dẫn xuất chỉ định chế độ mà các tính năng của lớp cơ sở được dẫn xuất. Công cụ sửa đổi truy cập kiểm soát vị trí và cách thức các thành viên dữ liệu và chức năng thành viên của lớp cơ sở có thể được kế thừa bởi các lớp con. Các công cụ sửa đổi truy cập này được sử dụng để hạn chế quyền truy cập của lớp cơ sở từ lớp con để đóng gói dữ liệu. Điều này thường được gọi là ẩn dữ liệu.   

Trong PHP, có ba công cụ sửa đổi truy cập.  

  • Công cộng

Công cụ sửa đổi truy cập công khai cung cấp ít quyền riêng tư nhất cho các thuộc tính của lớp cơ sở. Nếu công cụ sửa đổi truy cập là công khai, điều đó có nghĩa là lớp dẫn xuất có thể truy cập các thành viên công khai và được bảo vệ của lớp cơ sở chứ không phải các thành viên riêng tư của lớp cơ sở.  

Ví dụ sau đây cho thấy một lớp với các thành viên public

lớp dẫn xuất_class_name mở rộng cơ sở_class_name

{

// thành viên dữ liệu công cộng

$var_name công khai;

// hàm thành viên public

chức năng công khai function_name()

{

// định nghĩa hàm ở đây

}

}

Chương trình sau minh họa công cụ sửa đổi truy cập công khai trong PHP

  • Riêng tư

Công cụ sửa đổi truy cập riêng cung cấp quyền riêng tư tối đa cho các thuộc tính của lớp cơ sở. Bạn chỉ có thể truy cập thành viên dữ liệu hoặc hàm thành viên được khai báo riêng trong lớp mà chúng được khai báo

Ví dụ sau minh họa một lớp với các thành viên private.  

lớp dẫn xuất_class_name mở rộng cơ sở_class_name

{

// thành viên dữ liệu riêng tư

$var_name riêng tư;

// hàm thành viên riêng

chức năng riêng function_name()

{

// định nghĩa hàm ở đây

}

}

Mặc dù khả năng truy cập trực tiếp của một thành viên riêng tư là không thể, nhưng bạn có thể truy cập chúng một cách gián tiếp bằng cách sử dụng các hàm thành viên công khai trong lớp. Nếu các thành viên riêng được truy cập bởi một thành viên chung trong một lớp, thì bất kỳ lớp con nào truy cập chức năng chung này cũng có thể truy cập thành viên riêng đó

Chương trình sau minh họa công cụ sửa đổi quyền truy cập riêng tư trong PHP

 

Trong chương trình này, bạn đang cố gắng truy cập trực tiếp vào một thành viên riêng trong lớp dẫn xuất. Đó là lý do tại sao nó gây ra lỗi

  • được bảo vệ

Công cụ sửa đổi quyền truy cập được bảo vệ cung cấp mức độ riêng tư trung gian cho các thành viên của một lớp. Nếu bộ chỉ định truy cập được bảo vệ, điều này có nghĩa là lớp dẫn xuất có thể truy cập các thành viên công khai và được bảo vệ của lớp cơ sở. Các thành viên được bảo vệ của một lớp cơ sở có thể được truy cập trong lớp đó và bởi các lớp con của nó

Ví dụ sau minh họa một lớp với các thành viên được bảo vệ.  

lớp dẫn xuất_class_name mở rộng cơ sở_class_name

{

// thành viên dữ liệu được bảo vệ

$var_name được bảo vệ;

// hàm thành viên được bảo vệ

chức năng được bảo vệ function_name()

{

// định nghĩa hàm ở đây

}

}

Chương trình sau minh họa công cụ sửa đổi quyền truy cập được bảo vệ trong PHP

 

Lớp con với các phương thức và thuộc tính riêng

Trong kế thừa, mục đích của việc kế thừa các thuộc tính và thành viên của lớp cơ sở bởi một lớp con là hoàn thành tốt. Khi một lớp con kế thừa từ một lớp cơ sở, nó có quyền truy cập trực tiếp vào tất cả các thành viên không riêng tư của lớp cơ sở. Và thậm chí các thành viên riêng tư có thể được truy cập gián tiếp.  

Tuy nhiên, một lớp con cũng có thể có các phương thức và thuộc tính riêng. Ngoài các thành viên của lớp cơ sở, một lớp dẫn xuất có thể có bao nhiêu thành viên dữ liệu và phương thức tùy thích. Một lớp dẫn xuất cũng giống như bất kỳ lớp nào khác, với lợi ích là có quyền truy cập vào một số phương thức và thuộc tính khác của lớp cơ sở. Đây là những gì kế thừa là tất cả về.   

Chương trình sau minh họa một lớp con có quyền truy cập vào các thuộc tính của lớp cơ sở cùng với các phương thức và thuộc tính của nó

Chủ đề