Lập trình hướng đối tượng (oop) trong php

Ở nội dung bài viết trước bọn họ đã tò mò về OOP trong PHP là gì cùng mình tất cả nói là OOP vào PHP gồm 4 tính chất. Trong bài viết này bọn họ sẽ cùng mọi người trong nhà tìm hiểu chi tiết về 4 đặc điểm này, từ bỏ đó ship hàng cho các bài tiếp theo.

Bạn đang xem: Lập trình hướng đối tượng (oop) trong php

*
4 đặc điểm OOP trong PHP

1. Tính trừu tượng (abstraction)

Trừu tượng hóa là thừa trình dễ dàng hóa một đối tượng, mà trong đó chỉ bao hàm những đặc điểm quan vai trung phong và bỏ qua mất những quánh điểm cụ thể nhỏ. Quy trình trừu tượng hóa tài liệu giúp ta xác định được hầu hết thuộc tính, hành vi nào của đối tượng quan trọng sử dụng mang lại chương trình.

Để hiểu rõ về tính trừu tượng bọn họ sẽ khám phá về Abstract class Interface.


Danh mục

1. Tính trừu tượng (abstraction)

1.1. Abstract class

Lớp Abstract sẽ định nghĩa những phương thức (hàm) nhưng mà từ đó các lớp bé sẽ kế thừa nó và Overwrite lại (tính nhiều hình).

Đối với lớp này thì nó sẽ sở hữu các điểm khác sau:


Các cách làm ( hàm ) khi được khai báo là abstract thì chỉ được định nghĩa chứ không hề được phép viết code giải pháp xử lý trong phương thức.Trong abstract class nếu chưa phải là cách làm abstract thì vẫn khai báo và viết code được như bình thường.Phương thức abstract chỉ có thể khai báo trong abstract class.Các trực thuộc tính trong abstract class thì không được khai báo là abstract.Không thể khởi chế tạo ra một abstract class.Vì không thể khởi chế tạo ra được abstract class nên các phương thức được khai báo là abstract chỉ được khai báo ở mức độ protected và public.Các lớp kế thừa một abstract class phải định nghĩa lại tất cả các phương thức trong abstract class đó(nếu không có khả năng sẽ bị lỗi).

Và để khai báo một abstract class ta dùng cú pháp sau:


1
2
3
4
5
abstract class ClassName


Trong đó: ClassName là thương hiệu của class bọn họ cần khai báo.

Cú pháp khai báo một phương thức abstract:


1
2
abstract visibility function methodName();

Trong đó: visibility là một trong 2 trường đoản cú khóa publicprotected hoặc có thể bỏ trống (bỏ trống thì là public), methodName là tên gọi của phương thức họ cần khai báo.

Ví dụ 1: khai báo một cách tiến hành abstract trong abstract class


1
2
3
4
5
6
7
8
9
10
11
12
abstract class ConNguoi

//khai báo một abstract method đúng
abstract public function getName();
//Sai do abstract class quan yếu viết code xử lý được
abstract public function getHeight()

//


Ví dụ 2: phải định nghĩa lại các phương thức abstract của abstract class đó lúc kế thừa.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
abstract class ConNguoi

protected $name;
abstract protected function getName();

//class này sai do chưa định nghĩa lại cách làm abstracs getName
class NguoiLon extends ConNguoi

//

//class này đúng bởi vì đã định nghĩa lại tương đối đầy đủ các phương thức abstract
class TreTrau extends ConNguoi

public function getName()

return $this->name;


1.2. Interface

Interface trong hướng đối tượng là một khuôn mẫu, góp cho họ tạo ra cỗ khung cho 1 hoặc nhiều đối tượng và quan sát vào interface thì chúng ta hoàn toàn hoàn toàn có thể xác định được các phương thức và những thuộc tính cố định và thắt chặt (hay có cách gọi khác là hằng) sẽ có được trong đối tượng người tiêu dùng implement nó.

Để khai báo interface trong PHP bọn họ dùng cú pháp:


1
2
3
4
5
interface InterfaceName


Trong đó: InterfaceName là thương hiệu của interface các bạn có nhu cầu đặt.

Tính hóa học của interface


Interface không phải là một đối tượng.Trong interface chúng ta chỉ được khai báo cách thức chứ không được tư tưởng chúng.Trong interface chúng ta hoàn toàn có thể khai báo được hằng nhưng chẳng thể khai báo biến.Một interface không thể khởi tạo nên (vì nó không phải là một trong những đối tượng).Các lớp implement interface thì bắt buộc khai báo và tư tưởng lại những phương thức tất cả trong interface đó.Một class có thể implements nhiều interface.Các interface có thể kế thừa lẫn nhau.

1.3. So sánh giữa interface và abstract class

Những điểm như là nhau giữa interface cùng abstract class:

Đều chẳng thể khởi tạo đối tượng.Đều có thể chứa phương thức abstract.

Những điểm không giống nhau:

InterfaceAbstract class
Chỉ hoàn toàn có thể kế thừa những interface khác.

Xem thêm: Unsigned Char Là Gì - Kiểu Và Khai Báo Biến Trong C

Có thể kế thừa từ là một lớp và các interface.
Chỉ chứa những khai báo và không tồn tại phần nội dungCó thể chứa các thuộc tính hay và những phương thức bình thường bên trong.
Không tất cả constructor với cũng không tồn tại destructor.Có constructor với destructor.
Phạm vi truy vấn mặc định là publicCó thể khẳng định modifier.
Dùng để khái niệm 1 khuôn mẫu mã hoặc phép tắc chung.Dùng để định nghĩa chủ công của lớp, thành phần thông thường của lớp và sử dụng cho nhiều đối tượng người tiêu dùng cùng kiểu.
Cần thời hạn để tìm kiếm phương thức thực tế tương ứng với lớp dẫn đến thời gian chậm hơn 1 chút.Nhanh rộng so cùng với interface.
Khi ta thêm mới 1 khai báo. Ta bắt buộc tìm hết toàn bộ những lớp có xúc tiến interface này nhằm định nghĩa nội dung cho cách tiến hành mới.Đối với abstract class, lúc đĩnh nghĩa 1 phương thức mới ta trả toàn hoàn toàn có thể định nghĩa nội dung cách thức là rỗng hoặc những thực hiện mặc định như thế nào đó. Chính vì như vậy toàn bộ khối hệ thống vẫn chạy bình thường.
Sự khác biệt giữa Interface với Abstract class

2. Tính kế thừa (inheritance)

Tính thừa kế trong lập trình hướng đối tượng có thể chấp nhận được một lớp (class) có thể kế thừa những thuộc tính và thủ tục từ những lớp khác đã có định nghĩa. Lớp được kế thừa còn được gọi là lớp thân phụ và lớp kế thừa được hotline là lớp con.

Điều này cho phép các đối tượng hoàn toàn có thể tái áp dụng hay mở rộng các công năng sẵn có mà không phải triển khai định nghĩa lại.

Trong PHP để khai báo kế thừa xuất phát điểm từ 1 lớp cha bọn họ sử dụng tự khóa extends theo cú pháp: