Tôi không thực sự chắc chắn điều gì sẽ đẹp hơn hoặc khi nào tôi thực sự sử dụng trong lớp trừu tượng và thuộc tính hoặc khi sử dụng thuộc tính không trừu tượng. Tôi sẽ cố gắng làm một ví dụ đơn giản. Giả sử tôi có điều này:Không chắc chắn khi nào nên sử dụng thuộc tính trừu tượng và khi không
abstract class Human
{
public GenderType Gender { get; set; }
public string Name { get; set; }
public Date Born { get; set; }
public bool IsNerd { get; set; }
abstract public void Speak();
abstract public void Sleep();
abstract public void AnoyingPeopleOnStackOverflow();
//... so on
}
class Peter : Human
{
//Peter is special, he got a second name
//But thats all, everything else is the same as like on other humans
public string SecondName { get; set; }
//...override abstract stuff
}
Điều này có ổn không? Như tôi đã hiểu, tôi không phải sử dụng một thuộc tính trừu tượng nếu tôi không muốn ghi đè nó. Và trong tình huống này, nó sẽ là ok, chỉ cần các phương pháp như Speak
, Sleep
và như vậy sẽ được trừu tượng.
Bây giờ, nếu điều này là ok, khi nào hoặc tôi nên sử dụng thuộc tính trừu tượng?
"Khi nào hoặc nên sử dụng thuộc tính trừu tượng" --- khi bạn muốn khẳng định rằng lớp con phải cung cấp phương pháp triển khai cụ thể – zerkms
1) Nếu đây là Java, có thể sẽ không có vấn đề gì. Bạn có thể chỉ cần sử dụng một "giao diện". Đó chính là những gì bạn đang làm ở đây trong C#, phải không?2) cảm giác cá nhân của tôi là nếu nó cần phải là một phần của "hợp đồng", sau đó nó là thích hợp để tuyên bố nó trong lớp trừu tượng của bạn. Nói cách khác, tôi nghĩ rằng những gì bạn đã làm là hoàn toàn OK. IMHO ... – paulsm4
@ paulsm4 bạn cũng có thể làm điều đó với C#. –