Triển khai tính kế thừa và đa hình trong mã Unity
Việc triển khai inheritance và tính đa hình trong mã cho phép bạn tạo các lớp chuyên biệt hơn dựa trên các lớp hiện có và coi đối tượng của các lớp khác nhau là đối tượng của một lớp cơ sở chung. Điều này thúc đẩy việc tái sử dụng mã, tính linh hoạt và khả năng mở rộng. Sau đây là ví dụ về triển khai tính kế thừa và tính đa hình trong Unity:
Di sản
Tính kế thừa đạt được bằng cách tạo một lớp mới (lớp con hoặc lớp dẫn xuất) dựa trên lớp hiện có (lớp cha hoặc lớp cơ sở). Lớp con kế thừa các thuộc tính và phương thức của lớp cha và có thể thêm các thuộc tính và phương thức duy nhất của riêng nó hoặc sửa đổi các thuộc tính và phương thức hiện có. Đây là một ví dụ:
// Base class
public class Shape
{
public virtual void Draw()
{
Debug.Log("Drawing a shape...");
}
}
// Derived class
public class Circle : Shape
{
public override void Draw()
{
Debug.Log("Drawing a circle...");
}
}
Trong ví dụ này, lớp 'Shape' là lớp cơ sở và lớp 'Circle' có nguồn gốc từ nó. Phương thức 'Draw()' được định nghĩa trong cả hai lớp, nhưng lớp 'Circle' ghi đè phương thức này để cung cấp cách triển khai riêng của nó. Điều này cho phép bạn chuyên biệt hóa hành vi của lớp 'Circle' trong khi vẫn duy trì hành vi chung được xác định trong lớp 'Shape'.
Đa hình
Tính đa hình cho phép các đối tượng thuộc các lớp khác nhau được coi là objects của một lớp cơ sở chung, mang lại sự linh hoạt và cho phép mã hoạt động trên các đối tượng một cách tổng quát. Đây là một ví dụ:
void DrawShapes(Shape[] shapes)
{
foreach (Shape shape in shapes)
{
shape.Draw();
}
}
// Usage
Shape[] shapes = new Shape[] { new Circle(), new Shape() };
DrawShapes(shapes);
Trong ví dụ này, phương thức 'DrawShapes()' chấp nhận một mảng đối tượng 'Shape'. Nó lặp lại mảng và gọi phương thức 'Draw()' trên mỗi đối tượng. Mảng chứa một đối tượng 'Circle' và một đối tượng cơ sở 'Shape'. Tuy nhiên, vì lớp 'Circle' ghi đè phương thức 'Draw()' nên việc triển khai thích hợp cho từng đối tượng sẽ được gọi dựa trên loại thực tế của nó khi chạy. Điều này thể hiện tính đa hình trong hành động.
Phần kết luận
Bằng cách tận dụng tính kế thừa và tính đa hình trong mã Unity của mình, bạn có thể tạo các lớp chuyên biệt dựa trên các lớp hiện có, xác định các hành vi được chia sẻ trong các lớp cơ sở và viết mã hoạt động trên các đối tượng một cách tổng quát, mang lại sự linh hoạt và thúc đẩy việc tái sử dụng mã.