hocvietcode.com
  • Trang chủ
  • Học lập trình
    • Lập trình C/C++
    • Lập trình HTML
    • Lập trình Javascript
      • Javascript cơ bản
      • ReactJS framework
      • AngularJS framework
      • Typescript cơ bản
      • Angular
    • Lập trình Mobile
      • Lập Trình Dart Cơ Bản
        • Dart Flutter Framework
    • Cơ sở dữ liệu
      • MySQL – MariaDB
      • Micrsoft SQL Server
      • Extensible Markup Language (XML)
      • JSON
    • Lập trình PHP
      • Lập trình PHP cơ bản
      • Laravel Framework
    • Lập trình Java
      • Java Cơ bản
    • Cấu trúc dữ liệu và giải thuật
    • Lập Trình C# Cơ Bản
    • Machine Learning
  • WORDPRESS
    • WordPress cơ bản
    • WordPress nâng cao
    • Chia sẻ WordPress
  • Kiến thức hệ thống
    • Microsoft Azure
    • Docker
    • Linux
  • Chia sẻ IT
    • Tin học văn phòng
      • Microsoft Word
      • Microsoft Excel
    • Marketing
      • Google Adwords
      • Facebook Ads
      • Kiến thức khác
    • Chia sẻ phần mềm
    • Review công nghệ
    • Công cụ – tiện ích
      • Kiểm tra bàn phím online
      • Kiểm tra webcam online
Đăng nhập
  • Đăng nhập / Đăng ký

Please enter key search to display results.

Home
  • Lập trình PHP cơ bản
Abstract Class (lớp trừu tượng) trong PHP

Abstract Class (lớp trừu tượng) trong PHP

  • 17-03-2023
  • Toanngo92
  • 0 Comments

Mục lục

  • Khái niệm Abstract Class (lớp trừu tượng)
    • Non-Abstract Method trong Abstract Class (Phương thức không trừu tượng trong Abstract Class)
    • Kế thừa abstract class (inheriting abstract class/extend abstract class)
    • Khác biệt giữa một interface và một abstract class

Khái niệm Abstract Class (lớp trừu tượng)

Trong khi thực hiện kế thừa, có thể thấy rằng người ta có thể tạo đối tượng của lớp cha cũng như lớp con. Tuy nhiên, nếu người dùng muốn hạn chế sử dụng trực tiếp lớp cha thì sao? Nghĩa là, trong một số trường hợp, người ta có thể muốn định nghĩa một lớp cơ sở khai báo cấu trúc của một thực thể nhất định mà không đưa ra cách triển khai đầy đủ mọi phương thức. Một lớp cơ sở như vậy đóng vai trò là một dạng tổng quát sẽ được kế thừa bởi tất cả các lớp con của nó. Các phương thức của lớp cơ sở phục vụ như một hợp đồng hoặc một tiêu chuẩn mà lớp con có thể triển khai theo cách riêng của nó.

Một lớp trừu tượng phục vụ như một khuôn khổ cung cấp một số hành vi nhất định cho các lớp khác. Lớp con cung cấp hành vi theo yêu cầu cụ thể của khung hiện có. Các lớp trừu tượng không thể được khởi tạo và chúng phải được phân lớp để sử dụng các thành viên của lớp. Lớp con cung cấp các triển khai cho các phương thức trừu tượng trong lớp cha của nó.

PHP cung cấp từ khóa abstract để sử dụng tác vụ này.

Sau đây là một số điểm quan trọng cần lưu ý về các abstract class và abstract method:

  • Các abstract class có thể có các method (phương thức) và properties (thuộc tính) tương tự như các class khác. Tuy nhiên, chúng không thể được khởi tạo.
  • Một class con phải được tạo để khởi tạo một abstract class.
  • Class (lớp) phải là abstract (trừu tượng) để có một method (phương thức) trừu tượng.
  • (Abstract method) Phương thức trừu tượng là một khai báo có phần thân rỗng. Tên của phương thức và đối số được cung cấp bởi người dùng.

Ví dụ:

<?php
abstract class Microwave{
    abstract public function bake();
}

Trong ví dụ này, lớp Microwave là abstract class với bake() là một abstract method.

Mục đích chính của abstract class là để cho các nhà phát triển tuân theo các nguyên tắc nhất định. Ví dụ: để tạo một lớp mới kế thừa lớp Microwave , cần cung cấp định nghĩa cho abstract method bake().
Do đó, lớp con bắt buộc phải định nghĩa phương thức bake().

Non-Abstract Method trong Abstract Class (Phương thức không trừu tượng trong Abstract Class)

Một phương thức trừu tượng có thể có cả phương thức trừu tượng và không trừu tượng. Một lớp có phương thức trừu tượng phải được khai báo trừu tượng, lớp con có thể truy cập mà không cần ghi đè.

Ví dụ sau đây cho thấy cách bao gồm phương thức không trừu tượng trong Microwave được xác định trước đó:

<?php
abstract class Microwave{
    protected $degree;
    public function start(){
        echo $this->degree."- Microwave start ... <br/>";
    }
    public function stop(){
        echo $this->degree. "- Microwave stop ... <br/>";
    }
    public function setDegree($degree){
        $this->degree = $degree;
    }
    abstract public function bake();
}

Trong ví dụ này, ba phương thức không trừu tượng là start(), stop() và setDegree() được thêm vào abstract class Microwave:

Kế thừa abstract class (inheriting abstract class/extend abstract class)

Tương tự như các lớp khác, các lớp trừu tượng cũng có thể được kế thừa. Lớp con khộng nếu định nghĩa là abstract class, nó phải định nghĩa abstract method . Ngược lại, lớp con nếu được định nghĩa là abstract class nó không định nghĩa abstract method.

Ví dụ:

abstract class Microwave{
    protected $degree;
    public function start(){
        echo $this->degree."- Microwave start ... <br/>";
    }
    public function stop(){
        echo $this->degree. "- Microwave stop ... <br/>";
    }
    public function setDegree($degree){
        $this->degree = $degree;
    }
    abstract public function bake();
}

abstract class Oven extends Microwave{
    abstract function bake();
}

class Onida extends Microwave{
    public function bake(){
        echo $this->degree."- Onida bake ... <br/>";
    }
}

class Samsung extends Microwave{
    public function bake(){
        echo $this->degree."- Samsung bake ... <br/>";
    }
}

$samsung = new Samsung();
$samsung->setDegree("1000");
$samsung->bake();

Khác biệt giữa một interface và một abstract class

  • Trong khi một interface không thể có các method cụ thể và chỉ có các method trừu tượng, một abstract class có thể có cả hai.
  • Trong một interface, người dùng chỉ có thể khai báo các method là public. Tuy nhiên, trong một abstract class, người dùng có thể khai báo các phương thức là public, private hoặc protected.
  • Trong một class có thể triển khai nhiều interface nhưng chỉ có một lớp abstract class có thể được kế thừa.

Bài viết liên quan:

Hướng dẫn sử dụng xdebug để gỡ lỗi PHP bằng visual studio code môi trường windows
Hướng dẫn cấu hình Extension live server tự động tải lại PHP khi cập nhật file trên visual studio code
Kỹ thuật AJAX trong PHP
Làm việc với JSON trong PHP
Chuyển hướng trình duyệt, download file bằng HTTP Header trong PHP
Một số cải tiến mới của PHP 8
Nhận dạng trình duyệt và nền tảng trong PHP
Từ khóa final, static, overloading và magic method trong PHP
Interface trong hướng đối tượng PHP
Method (phương thức), public,private,protected, method overriding trong hướng đối tượng PHP
Iterable và iterator trong PHP
Namespace trong hướng đối tượng PHP

THÊM BÌNH LUẬN Cancel reply

Dịch vụ thiết kế Wesbite

NỘI DUNG MỚI CẬP NHẬT

2. PHÂN TÍCH VÀ ĐẶC TẢ HỆ THỐNG

1. TỔNG QUAN KIẾN THỨC THỰC HÀNH TRIỂN KHAI DỰ ÁN CÔNG NGHỆ THÔNG TIN

Hướng dẫn tự cài đặt n8n comunity trên CyberPanel, trỏ tên miền

Mẫu prompt tạo mô tả chi tiết bối cảnh

Một số cải tiến trong ASP.NET Core, Razor Page, Model Binding, Gabbage collection

Giới thiệu

hocvietcode.com là website chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !

Liên hệ quảng cáo: [email protected]

Kết nối với HỌC VIẾT CODE

© hocvietcode.com - Tech888 Co .Ltd since 2019

Đăng nhập

Trở thành một phần của cộng đồng của chúng tôi!
Registration complete. Please check your email.
Đăng nhập bằng google
Đăng kýBạn quên mật khẩu?

Create an account

Welcome! Register for an account
The user name or email address is not correct.
Registration confirmation will be emailed to you.
Log in Lost your password?

Reset password

Recover your password
Password reset email has been sent.
The email could not be sent. Possible reason: your host may have disabled the mail function.
A password will be e-mailed to you.
Log in Register
×