2016-05-10 28 views
5

Tôi có 3 lớp học phù thủy kế thừa một lớp được gọi ParentClass và mỗi 3 có đoạn mã sau bênGọi phương pháp và vẽ

public void DrawBackground(Graphics e, Rectangle rect) 
{ 
    e.FillRectangle(Brushes.Red, rect); 
} 

Ở dạng chính của tôi tôi có một biến như thế này ParentClass PClass = new OneOfTheThreeClasses

thế nào tôi có thể gọi phương thức DrawBAckground của các lớp đó bằng biến đó, từ sự kiện sơn của biểu mẫu của tôi không?

+0

Tìm hiểu về các phương pháp ảo. –

+0

Bạn có nhận ra rằng việc gọi một phương thức như vậy trên một lớp khác, đi qua trong 'Graphics' và' Rectangle', sẽ chỉ dẫn đến biểu mẫu gọi đang được vẽ? – adv12

+0

@ adv12 Có tôi biết rằng – Adrao

Trả lời

4

Tạo phương thức trừu tượng hoặc ảo trên ParentClass. Một cái gì đó như thế này:

public virtual void DrawBackground(Graphics e, Rectangle rect) 
{ 
    // do nothing 
} 

Sau đó, trong các lớp con, ghi đè phương thức:

public override void DrawBackground(Graphics e, Rectangle rect) 
{ 
    e.FillRectangle(Brushes.Red, rect); 
} 

Ý tưởng là ParentClass nhu cầu để xác định các hoạt động có thể được thực hiện trên nó hoặc bất kỳ phiên bản đa hình của nó (chẳng hạn như loại trẻ em). Nó không nhất thiết phải cung cấp một thực thi (và định nghĩa có thể trừu tượng hoặc ảo tùy thuộc vào cách tự thực hiện và sử dụng ParentClass), nhưng cần phải "biết" về phương pháp theo một cách nào đó để có thể để gọi nó trên một phiên bản của ParentClass.

+0

Cảm ơn, tôi vừa kiểm tra msdn, nó chỉ ra rằng rất nhiều phương pháp trong VS là ảo, vì vậy họ có thể bị ghi đè một lần nữa và một lần nữa .. – Adrao

Các vấn đề liên quan