Hướng dẫn php cast to subclass - truyền php sang lớp con

Kế thừa là một nguyên tắc lập trình được thiết lập tốt và PHP sử dụng nguyên tắc này trong mô hình đối tượng của nó. Nguyên tắc này sẽ ảnh hưởng đến cách nhiều lớp và đối tượng liên quan đến nhau.

Ví dụ, khi mở rộng một lớp, lớp con kế thừa tất cả các phương thức, thuộc tính và hằng số được bảo vệ và được bảo vệ từ lớp cha. Trừ khi một lớp ghi đè các phương pháp đó, họ sẽ giữ lại chức năng ban đầu của chúng.

Điều này rất hữu ích để xác định và trừu tượng hóa chức năng và cho phép thực hiện chức năng bổ sung trong các đối tượng tương tự mà không cần phải thực hiện lại tất cả các chức năng được chia sẻ.

Các phương pháp riêng tư của lớp cha không thể truy cập được vào lớp trẻ. Do đó, các lớp trẻ em có thể tự tái tạo một phương thức riêng tư mà không quan tâm đến các quy tắc thừa kế bình thường. Tuy nhiên, trước Php 8.0.0, các hạn chế finalstatic đã được áp dụng cho các phương thức riêng tư. Kể từ Php 8.0.0, hạn chế phương thức riêng duy nhất được thực thi là các hàm tạo private final, vì đó là một cách phổ biến để "vô hiệu hóa" hàm tạo khi sử dụng các phương thức nhà máy tĩnh thay thế.

Khả năng hiển thị của các phương pháp, tính chất và hằng số có thể được thư giãn, ví dụ: Một phương pháp protected có thể được đánh dấu là public, nhưng chúng không thể bị hạn chế, ví dụ: Đánh dấu một tài sản publicprivate.

Ghi chú:: :

Trừ khi tự động tải được sử dụng, các lớp phải được xác định trước khi chúng được sử dụng. Nếu một lớp mở rộng một lớp khác, thì lớp cha phải được khai báo trước cấu trúc lớp con. Quy tắc này áp dụng cho các lớp kế thừa các lớp và giao diện khác.

Ghi chú:: :

Trừ khi tự động tải được sử dụng, các lớp phải được xác định trước khi chúng được sử dụng. Nếu một lớp mở rộng một lớp khác, thì lớp cha phải được khai báo trước cấu trúc lớp con. Quy tắc này áp dụng cho các lớp kế thừa các lớp và giao diện khác.

class {
    public 
int $prop;
}
class 
extends {
    
// Illegal: read-write -> readonly
    
public readonly int $prop;
}
?>

Nó không được phép ghi đè một thuộc tính đọc-viết với thuộc tính readonly hoặc ngược lại.

class Foo
{
    public function 
printItem($string)
    {
        echo 
'Foo: ' $string PHP_EOL;
    }

        public function

static0

Ví dụ #1 ví dụ kế thừa

Trả về loại tương thích với các lớp bên trong

Trước PHP 8.1, hầu hết các lớp hoặc phương thức nội bộ đã không khai báo loại trả lại của họ và bất kỳ loại hoàn trả nào được cho phép khi mở rộng chúng.

Kể từ Php 8.1.0, hầu hết các phương thức nội bộ bắt đầu "dự kiến" khai báo loại trả lại của họ, trong trường hợp đó, loại phương thức trả về phải tương thích với cha mẹ được mở rộng; Nếu không, một thông báo không nhận được được phát ra. Lưu ý rằng việc thiếu một tuyên bố hoàn trả rõ ràng cũng được coi là sự không phù hợp đặc trưng, ​​và do đó dẫn đến thông báo từ chối.

Nếu loại trả về không thể được khai báo cho một phương thức ghi đè do các mối quan tâm tương thích phiên bản chéo PHP, một thuộc tính static1 có thể được thêm vào để im lặng thông báo từ chối.

static2

Ví dụ #2 Phương thức ghi đè không khai báo bất kỳ loại trả về nào

static3

Ví dụ #3 Phương thức ghi đè khai báo loại trả về sai

static4

Ví dụ #4 Phương thức ghi đè tuyên bố loại trả về sai mà không có thông báo không dùng nữa ¶

Jackdracona tại msn dot com ¶

static5

static6

static7

static8

static9

private final0

12 năm trước ¶

Mohammad Istanbouly ¶

private final1

private final2

private final3

private final4

5 năm trước ¶

Jackdracona tại msn dot com ¶

private final5

private final6

private final7

private final8

private final9

protected0

12 năm trước ¶

Mohammad Istanbouly ¶

protected1

protected2

protected3

protected4

5 năm trước ¶

5 năm trước ¶

protected5

protected6

protected7

private final9

protected9

Strata_ranger tại hotmail dot com

Jackdracona tại msn dot com ¶

public0

public1

public2

private final9

public4

12 năm trước ¶

Mohammad Istanbouly ¶

public5

public6

public7

public8

public9

5 năm trước ¶

protected5

public0

public1

public9

Strata_ranger tại hotmail dot com

Mohammad Istanbouly ¶

public3

public4

public5

public6

5 năm trước ¶

Mohammad Istanbouly ¶

public7

public8

public9

public9

5 năm trước ¶

Mohammad Istanbouly ¶

private1

private2

private3

private4

5 năm trước ¶

protected5

private5

private6

private7

private8

public9

Strata_ranger tại hotmail dot com

Akashwebdev tại gmail dot com ¶ ¶

class {
    public 
int $prop;
}
class 
extends {
    
// Illegal: read-write -> readonly
    
public readonly int $prop;
}
?>
0

class {
    public 
int $prop;
}
class 
extends {
    
// Illegal: read-write -> readonly
    
public readonly int $prop;
}
?>
1

class {
    public 
int $prop;
}
class 
extends {
    
// Illegal: read-write -> readonly
    
public readonly int $prop;
}
?>
2

private final9

class {
    public 
int $prop;
}
class 
extends {
    
// Illegal: read-write -> readonly
    
public readonly int $prop;
}
?>
4

7 năm trước

Mohammad Istanbouly ¶

class {
    public 
int $prop;
}
class 
extends {
    
// Illegal: read-write -> readonly
    
public readonly int $prop;
}
?>
5

class {
    public 
int $prop;
}
class 
extends {
    
// Illegal: read-write -> readonly
    
public readonly int $prop;
}
?>
6

class {
    public 
int $prop;
}
class 
extends {
    
// Illegal: read-write -> readonly
    
public readonly int $prop;
}
?>
7

5 năm trước ¶

Mohammad Istanbouly ¶

class {
    public 
int $prop;
}
class 
extends {
    
// Illegal: read-write -> readonly
    
public readonly int $prop;
}
?>
8

class {
    public 
int $prop;
}
class 
extends {
    
// Illegal: read-write -> readonly
    
public readonly int $prop;
}
?>
9

class Foo
{
    public function 
printItem($string)
    {
        echo 
'Foo: ' $string PHP_EOL;
    }
0

class Foo
{
    public function 
printItem($string)
    {
        echo 
'Foo: ' $string PHP_EOL;
    }
1

class Foo
{
    public function 
printItem($string)
    {
        echo 
'Foo: ' $string PHP_EOL;
    }
2

5 năm trước ¶

Jackdracona tại msn dot com ¶

class Foo
{
    public function 
printItem($string)
    {
        echo 
'Foo: ' $string PHP_EOL;
    }
3

class Foo
{
    public function 
printItem($string)
    {
        echo 
'Foo: ' $string PHP_EOL;
    }
4

class Foo
{
    public function 
printItem($string)
    {
        echo 
'Foo: ' $string PHP_EOL;
    }
5

class Foo
{
    public function 
printItem($string)
    {
        echo 
'Foo: ' $string PHP_EOL;
    }
6

12 năm trước ¶

Mohammad Istanbouly ¶

class Foo
{
    public function 
printItem($string)
    {
        echo 
'Foo: ' $string PHP_EOL;
    }
7

class Foo
{
    public function 
printItem($string)
    {
        echo 
'Foo: ' $string PHP_EOL;
    }
8

class Foo
{
    public function 
printItem($string)
    {
        echo 
'Foo: ' $string PHP_EOL;
    }
9

        public function0

5 năm trước ¶

Phân lớp trong PHP Một khi một lớp đã được xác định, có thể tạo một lớp mới có nguồn gốc từ nó mở rộng chức năng của lớp ban đầu. Lớp cha được gọi là siêu lớp và đứa trẻ là lớp con. Toàn bộ quá trình được gọi là phân lớp.Once a class has been defined it is possible to create a new class derived from it that extends the functionality of the original class. The parent class is called the superclass and the child the subclass. The whole process is referred to as subclassing.Once a class has been defined it is possible to create a new class derived from it that extends the functionality of the original class. The parent class is called the superclass and the child the subclass. The whole process is referred to as subclassing.

Làm thế nào để bạn tạo một lớp con?

Tạo một lớp con có thể đơn giản như bao gồm mệnh đề mở rộng trong khai báo lớp của bạn (chẳng hạn như trong Tuyên bố trong ImaginaryNumber ở trên).Tuy nhiên, bạn thường phải thực hiện các điều khoản khác trong mã của mình khi phân lớp một lớp, chẳng hạn như các phương thức ghi đè.including the extends clause in your class declaration (such as in the declaration in ImaginaryNumber above). However, you usually have to make other provisions in your code when subclassing a class, such as overriding methods.including the extends clause in your class declaration (such as in the declaration in ImaginaryNumber above). However, you usually have to make other provisions in your code when subclassing a class, such as overriding methods.

Làm thế nào để bạn tuyên bố một lớp trong PHP?

Xác định một lớp với từ khóa, lớp, theo sau là tên của lớp.Xác định phương thức cấu trúc bằng cách sử dụng __construct, theo sau là các đối số.Đối tượng của lớp sau đó có thể được khởi tạo bằng cách sử dụng tên lớp mới (espartuments_list). Define the constructor method using “__construct” followed by arguments. The object of the class can then be instantiated using “new ClassName( arguments_list )”. Define the constructor method using “__construct” followed by arguments. The object of the class can then be instantiated using “new ClassName( arguments_list )”

Php siêu lớp là gì?

Kế thừa cho phép bạn viết mã trong lớp cha và sử dụng nó trong cả hai lớp cha và con.Lớp cha còn được gọi là lớp cơ sở hoặc siêu lớp.Và lớp trẻ còn được gọi là một lớp có nguồn gốc hoặc một lớp con.Để xác định một lớp kế thừa từ một lớp khác, bạn sử dụng từ khóa mở rộng.The parent class is also called a base class or super class. And the child class is also known as a derived class or a subclass. To define a class inherits from another class, you use the extends keyword.The parent class is also called a base class or super class. And the child class is also known as a derived class or a subclass. To define a class inherits from another class, you use the extends keyword.