Trừu tượng hóa đóng gói đa hình kế thừa trong php

Lớp con sẽ kế thừa tất cả các thuộc tính và phương thức public và protected từ lớp cha. Ngoài ra, nó có thể có các thuộc tính và phương thức riêng

Một lớp kế thừa được định nghĩa bằng cách sử dụng từ khóa extends

Hãy xem một ví dụ

Thí dụ

class Fruit {
  public $name;
  public $color;
  public function __construct[$name, . ";
    $this->name = $name;
    $this->color = $color;
  }
  public function intro[] {
    echo "The fruit is {$this->name} and the color is {$this->color}.";
  }
}

// Strawberry được kế thừa từ Fruit
class Strawberry mở rộng Fruit {
  public function message[] {
    echo "Am I a fruit or a berry? ";
  }
}
$strawberry = new Strawberry["Strawberry", "red"];
$strawberry->message[];
$strawberry->intro[];
?>

Tự mình thử »

Ví dụ giải thích

Lớp Strawberry được kế thừa từ lớp Fruit

Điều này có nghĩa là lớp Strawberry có thể sử dụng các thuộc tính public $name và $color cũng như các phương thức public __construct[] và intro[] từ lớp Fruit do tính kế thừa

Lớp Strawberry cũng có phương thức riêng. thông điệp[]

PHP - Kế thừa và Công cụ sửa đổi quyền truy cập được bảo vệ

Trong chương trước chúng ta đã biết rằng các thuộc tính hoặc phương thức của protected có thể được truy cập trong lớp và bởi các lớp dẫn xuất từ ​​lớp đó. Điều đó nghĩa là gì?

Hãy xem một ví dụ

Thí dụ

class Fruit {
  public $name;
  public $color;
  public function __construct[$name, . ";
    $this->name = $name;
    $this->color = $color;
  }
  protected function intro[] {
    echo "The fruit is {$this->name} and the color is {$this->color}.";
  }
}

class Strawberry extends Fruit {
  public function message[] {
    echo "Tôi là trái cây hay quả mọng?";
  }
}

// Thử gọi cả ba phương thức từ lớp bên ngoài
$strawberry = new Strawberry["Strawberry", "red"]; . __construct[] là công khai
$strawberry->message[]; . message[] được công khai
$strawberry->intro[]; . intro[] được bảo vệ
?>

Tự mình thử »

Trong ví dụ trên, chúng ta thấy rằng nếu chúng ta cố gắng gọi một phương thức protected [intro[]] từ bên ngoài lớp, chúng ta sẽ gặp lỗi. Phương pháp public sẽ hoạt động tốt

Hãy xem một ví dụ khác

Thí dụ

class Fruit {
  public $name;
  public $color;
  public function __construct[$name, . ";
    $this->name = $name;
    $this->color = $color;
  }
  protected function intro[] {
    echo "The fruit is {$this->name} and the color is {$this->color}.";
  }
}

class Strawberry extends Fruit {
  public function message[] {
    echo "Tôi là trái cây hay quả mọng?";
    // Call protected method from within derived class - OK
    $this -> intro[];
  }
}

$strawberry = new Strawberry["Dâu", "đỏ"]; . __construct[] là công khai
$strawberry->message[]; . message[] là công khai và nó gọi intro[] [được bảo vệ] từ bên trong lớp dẫn xuất
?>

Tự mình thử »

Trong ví dụ trên, chúng tôi thấy rằng tất cả đều hoạt động tốt. Đó là bởi vì chúng ta gọi phương thức protected [intro[]] từ bên trong lớp dẫn xuất

PHP - Ghi đè các phương thức kế thừa

Các phương thức kế thừa có thể được ghi đè bằng cách xác định lại các phương thức [sử dụng cùng tên] trong lớp con

Nhìn vào ví dụ dưới đây. Các phương thức __construct[] và intro[] trong lớp con [Strawberry] sẽ ghi đè lên các phương thức __construct[] và intro[] trong lớp cha [Fruit]

Blog này nhằm mục đích mô tả các trụ cột chính của lập trình hướng đối tượng để hiểu sâu hơn về lý do tại sao các nhà phát triển nên sử dụng OOP ngay từ đầu. Viết một số lớp và khởi tạo một số đối tượng là chưa đủ để coi bạn đang thực hành OOP. Để thực hành OOP, các nhà phát triển phải nắm bắt đầy đủ tất cả các trụ cột của OOP

Lập trình hướng đối tượng không chỉ là các lớp và đối tượng; . Điều cần thiết là phải hiểu điều này;

Junade Ali, Làm chủ các mẫu thiết kế PHP[1]

trừu tượng

Trừu tượng hóa là quá trình kết hợp nhiều chức năng thành một. Hãy nghĩ về một bộ điều nhiệt. Thông thường, bộ điều nhiệt cho phép người dùng thay đổi nhiệt độ mục tiêu, chọn các chế độ khác nhau như sưởi ấm, làm mát hoặc quạt và bật hoặc tắt thiết bị. Khi chúng ta sử dụng máy điều nhiệt, chúng ta không biết về những điều phức tạp tạo ra các chức năng này dưới mui xe. Bằng cách chỉ hiển thị các chức năng trừu tượng cần thiết cho người dùng, chúng tôi giúp người dùng sử dụng các chương trình của chúng tôi dễ dàng hơn

Tính trừu tượng làm cho mã của chúng ta dễ hiểu hơn. Những người khác đọc mã của chúng tôi không cần phải lo lắng về các chi tiết triển khai và có thể hiểu rõ hơn về chương trình của chúng tôi thông qua Trừu tượng hóa

đóng gói

Đóng gói là ý tưởng ẩn và hạn chế quyền truy cập vào các chi tiết triển khai của các đối tượng của chúng tôi. Đóng gói bảo vệ dữ liệu và chức năng cần thiết khỏi bị truy cập không đúng cách bên ngoài các đối tượng của chúng tôi. Sự bảo vệ thông qua đóng gói này làm cho mã của chúng tôi mạnh mẽ hơn và có thể dự đoán được. Nếu không đóng gói, chúng ta có thể vô tình cho phép các đối tượng khác tương tác với những thứ mà chúng ta không muốn chúng tương tác. Hơn nữa, đóng gói tăng khả năng bảo trì bằng cách cho phép chúng tôi biết chính xác nơi chúng tôi có thể thay đổi chi tiết triển khai mà không phá vỡ phần còn lại của chương trình

Di sản

Kế thừa là một kỹ thuật liên quan đến chức năng “kế thừa” của lớp con từ lớp cha hoặc lớp cha. Tính kế thừa làm cho mã của chúng ta trở nên “KHÔ” hơn và tăng khả năng sử dụng lại. DRY-ness dẫn đến tăng khả năng đọc và khả năng đọc dẫn đến khả năng bảo trì. Luôn quan tâm và cân nhắc khi nào chúng ta có thể triển khai tính kế thừa sẽ dẫn đến việc dọn dẹp các chương trình có khả năng mở rộng hơn

đa hình

Trong ngôn ngữ lập trình và lý thuyết kiểu, tính đa hình là việc cung cấp một giao diện duy nhất cho các thực thể thuộc các kiểu khác nhau hoặc việc sử dụng một ký hiệu duy nhất để biểu thị nhiều kiểu khác nhau.
- Wikipedia

Trong OOP, tính đa hình được thể hiện phổ biến nhất bởi các lớp con chạy cùng một phương thức kế thừa trả về các giá trị khác nhau. Hãy tưởng tượng một lớp cha Animal, với một phương thức “move[]”. Bây giờ hãy tưởng tượng hai lớp con, ốc sên và con chó, khi chúng ta chạy SnailClassInstance. move[], đầu ra của chúng ta có thể là “inch trên sàn. ” So sánh kết quả này với kết quả chúng tôi nhận được khi chạy dogClassInstance. di chuyển [], “tinh nghịch phi nước kiệu trên mặt đất. ”

Tính đa hình cho phép chúng ta có một sự kế thừa năng động hơn, điều này sẽ cho phép chúng ta sử dụng sự kế thừa nhiều hơn cho các giá trị mà nó cung cấp

Phần kết luận

Viết một vài lớp và khởi tạo một vài đối tượng và kết luận rằng chúng ta đang thực hành OOP là không đủ. Để thực sự thực hành OOP, chúng ta phải luôn ghi nhớ những trụ cột chính này và phát huy hết khả năng của chúng. Bằng cách sử dụng đầy đủ các phương pháp này, chúng tôi có thể thu được giá trị thực tế của OOP

Sự trừu tượng hóa và đóng gói đa hình kế thừa là gì?

Có ba khái niệm quan trọng hơn, đó là tính kế thừa, giúp mã OOP trở nên mô đun hơn, dễ sử dụng lại hơn và xây dựng mối quan hệ giữa các lớp . Tính đóng gói có thể ẩn một số chi tiết riêng tư của một lớp khỏi các đối tượng khác, trong khi tính đa hình có thể cho phép chúng ta sử dụng một thao tác chung theo những cách khác nhau.

Đóng gói và trừu tượng hóa trong PHP là gì?

Đóng gói là gói dữ liệu và phương thức trong một đơn vị và làm cho dữ liệu chỉ có thể truy cập được thông qua các phương thức [getter/setter] để đảm bảo an toàn cho dữ liệu. Trừu tượng đang ẩn chi tiết triển khai nội bộ về cách thức thực hiện công việc

Khái niệm OOP được sử dụng trong PHP là gì?

OOP cung cấp cấu trúc rõ ràng cho chương trình . OOP giúp giữ mã PHP KHÔ "Không lặp lại chính mình" và làm cho mã dễ bảo trì, sửa đổi và gỡ lỗi hơn. OOP cho phép tạo các ứng dụng có thể tái sử dụng đầy đủ với ít mã hơn và thời gian phát triển ngắn hơn.

Sự khác biệt giữa trừu tượng hóa và đa hình trong PHP là gì?

ĐA HÌNH. Đó là một cơ sở để sử dụng thành viên dữ liệu cùng tên hoặc hàm thành viên trong cùng một lớp. Trừu tượng hóa. nó là một cơ sở để ẩn dữ liệu bằng cách sử dụng các lớp trừu tượng và giao diện.

Chủ Đề