Hướng dẫn extends multiple classes php - mở rộng nhiều lớp php

2

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.Learn more.
Learn more.

Với "thực hiện", tôi có thể buộc một lớp xác định một số chức năng nhất định, nhưng tôi cần thêm một số chức năng vào giao diện để tránh mã trùng lặp. Điều này chỉ có thể nếu tôi tạo ra lớp "trừu tượng" và sử dụng "mở rộng". Nhưng "mở rộng" chỉ chấp nhận một lớp. Bởi vì mỗi lớp này là khác nhau, các tính năng giống như của một ứng dụng, tôi không thể mở rộng một trong số này. Vì vậy, có cách nào để có

class My extends Feature1, Feature2, Feature3{
}

??

Hỏi ngày 14 tháng 4 năm 2015 lúc 9:16Apr 14, 2015 at 9:16Apr 14, 2015 at 9:16

Hướng dẫn extends multiple classes php - mở rộng nhiều lớp php

2

PHP không cho phép nhiều người. Có hai cách để làm điều này -

Ngày thứ nhất

class a { }

class b extends a { }

class c extends b { }

Giao diện - - -

interface sb { }

class c extends a implements sb { }

Đã trả lời ngày 14 tháng 4 năm 2015 lúc 9:21Apr 14, 2015 at 9:21Apr 14, 2015 at 9:21

Sougata Bosesougata BoseSougata BoseSougata Bose

31.2k8 Huy hiệu vàng47 Huy hiệu bạc87 Huy hiệu đồng8 gold badges47 silver badges87 bronze badges8 gold badges47 silver badges87 bronze badges

1

Thanhn2001 tại gmail dot com

11 năm trước

vcnbianchi ¶

9 tháng trước

  • Williebegoode tại Att Dot Net
  • 8 năm trước

Các giao diện có thể xác định các phương thức ma thuật để yêu cầu thực hiện các lớp để thực hiện các phương thức đó.

Ghi chú:: :

Mặc dù chúng được hỗ trợ, bao gồm các hàm tạo trong giao diện không được khuyến khích mạnh mẽ. Làm như vậy làm giảm đáng kể tính linh hoạt của đối tượng thực hiện giao diện. Ngoài ra, các nhà xây dựng không được thực thi bởi các quy tắc thừa kế, có thể gây ra hành vi không nhất quán và bất ngờ.

class a { } class b extends a { } class c extends b { } 8

Để thực hiện giao diện, toán tử

class a { }

class b extends a { }

class c extends b { }
8 được sử dụng. Tất cả các phương thức trong giao diện phải được thực hiện trong một lớp; Không làm như vậy sẽ dẫn đến một lỗi nghiêm trọng. Các lớp có thể triển khai nhiều hơn một giao diện nếu muốn bằng cách tách từng giao diện bằng dấu phẩy.

Cảnh báo

Một lớp có thể triển khai hai giao diện xác định một phương thức có cùng tên, chỉ khi khai báo phương thức trong cả hai giao diện là giống hệt nhau.

Cảnh báo

Một lớp có thể triển khai hai giao diện xác định một phương thức có cùng tên, chỉ khi khai báo phương thức trong cả hai giao diện là giống hệt nhau.

Ghi chú:: :

Mặc dù chúng được hỗ trợ, bao gồm các hàm tạo trong giao diện không được khuyến khích mạnh mẽ. Làm như vậy làm giảm đáng kể tính linh hoạt của đối tượng thực hiện giao diện. Ngoài ra, các nhà xây dựng không được thực thi bởi các quy tắc thừa kế, có thể gây ra hành vi không nhất quán và bất ngờ.

Ghi chú:: :

Mặc dù chúng được hỗ trợ, bao gồm các hàm tạo trong giao diện không được khuyến khích mạnh mẽ. Làm như vậy làm giảm đáng kể tính linh hoạt của đối tượng thực hiện giao diện. Ngoài ra, các nhà xây dựng không được thực thi bởi các quy tắc thừa kế, có thể gây ra hành vi không nhất quán và bất ngờ.

Để thực hiện giao diện, toán tử class a { } class b extends a { } class c extends b { } 8 được sử dụng. Tất cả các phương thức trong giao diện phải được thực hiện trong một lớp; Không làm như vậy sẽ dẫn đến một lỗi nghiêm trọng. Các lớp có thể triển khai nhiều hơn một giao diện nếu muốn bằng cách tách từng giao diện bằng dấu phẩy.

Cảnh báo

Một lớp có thể triển khai hai giao diện xác định một phương thức có cùng tên, chỉ khi khai báo phương thức trong cả hai giao diện là giống hệt nhau.

Các giao diện có thể được mở rộng như các lớp sử dụng toán tử mở rộng.

class a { }

class b extends a { }

class c extends b { }
1
class a { }

class b extends a { }

class c extends b { }
2
class a { }

class b extends a { }

class c extends b { }
3

Lớp thực hiện giao diện phải khai báo tất cả các phương thức trong giao diện với chữ ký tương thích.

class a { }

class b extends a { }

class c extends b { }
4

interface sb { }

class c extends a implements sb { }
0

class a { }

class b extends a { }

class c extends b { }
6

class a { } class b extends a { } class c extends b { } 0

class a { }

class b extends a { }

class c extends b { }
4

interface sb { }

class c extends a implements sb { }
0

class a { }

class b extends a { }

class c extends b { }
9

Nó có thể cho các giao diện có hằng số.Hằng số giao diện hoạt động chính xác như hằng số lớp.Trước Php 8.1.0, chúng không thể bị ghi đè bởi một lớp/giao diện kế thừa chúng.

interface sb { }

class c extends a implements sb { }
0

interface sb { }

class c extends a implements sb { }
2

interface sb { }

class c extends a implements sb { }
2

Ví dụ

interface sb { }

class c extends a implements sb { }
3
interface sb { }

class c extends a implements sb { }
4
interface sb { }

class c extends a implements sb { }
5

Ví dụ về giao diện số 1

interface sb { }

class c extends a implements sb { }
6

interface sb { }

class c extends a implements sb { }
0

interface sb { }

class c extends a implements sb { }
8

Ví dụ #2 Giao diện có thể mở rộng

Ví dụ #3 Di truyền giao diện nhiều

11 năm trước

interface sb { }

class c extends a implements sb { }
9

interface sb { }

class c extends a implements sb { }
00

interface sb { }

class c extends a implements sb { }
01

interface sb { }

class c extends a implements sb { }
02

vcnbianchi ¶

9 tháng trước

interface sb { }

class c extends a implements sb { }
03

Williebegoode tại Att Dot Net

8 năm trước

interface sb { }

class c extends a implements sb { }
04

interface sb { }

class c extends a implements sb { }
05

interface sb { }

class c extends a implements sb { }
06