2016-04-30 24 views
5

Tôi muốn thực hiện một chương trình thị trường nhỏ. có một lớp trừu tượng có tên (Hàng hóa) và hai lớp có nguồn gốc từ nó (hàng khô và lạnh). Cách thêm một số mục sau đó? (trứng, sữa, gạo ... vv)Làm thế nào để khởi tạo lớp trừu tượng C#?

+1

Chỉ cần kế thừa từ 'DryGoods' hoặc' ColdGoods'? Bạn có thể [sửa] câu hỏi để hiển thị các lớp bạn có và cách bạn muốn sử dụng các lớp khác (trứng, sữa vv) – Rhumborl

+0

Tôi có một lớp học khác (tủ lạnh), (giá) và (giỏ hàng) Tôi muốn sử dụng các mục để đặt chúng trên kệ hoặc trong tủ lạnh. và thực hiện một biểu tượng để hiển thị các mục, đặt chúng vào giỏ hàng và thanh toán, như khách hàng – Saja

Trả lời

13

Bạn không thể khởi tạo lớp trừu tượng. Mục đích duy nhất là hoạt động như một lớp cơ sở. Trứng, sữa, lớp gạo của bạn phải lấy được từ Hàng hóa và thực hiện chức năng, như được hiển thị bên dưới:

public abstract class Goods 
{ 

} 

public class DryGoods : Goods 
{ 

} 

public class ColdGoods : Goods 
{ 

} 

Sau đó, bạn có thể có nhiều sản phẩm nguyên thủy hơn kế thừa từ hàng Khô hoặc Lạnh.

public class Egg : DryGoods 
{ 

} 

public class Milk : ColdGoods 
{ 

} 

Hoặc nếu bạn không cần Milk hoặc Egg lớp trọng lượng dưới dạng ánh sáng (Hoặc các vật thể chuyển nhượng), bạn chỉ có thể sử dụng có nguồn gốc DryGoods hoặc ColdGoods loại trực tiếp và có một tài sản GoodsType:

DryGoods egg = new DryGoods(); 
egg.GoodsType = DryGoods.Egg; 

ColdGoods milk = new ColdGoods(); 
milk.GoodsType = ColdGoods.Milk; 
+4

'DryGoods' và' ColdGoods 'có lẽ cũng nên trừu tượng, không phải vì mã, mà vì lợi ích của logic kinh doanh. –

+0

Nếu là bạn, tôi tạo một số ví dụ của DryGoods và ColdGoods thay vì tạo Entity mới. –

+0

Nếu tôi tạo các đối tượng từ các lớp dẫn xuất, thì việc sử dụng (GoodsType) là gì? – Saja

0

Bạn đã tạo đối tượng của lớp con và sử dụng đối tượng của lớp con, bạn có thể thiết lập các giá trị. Bạn không thể khởi tạo một lớp trừu tượng. Bạn có thể sử dụng nó như chỉ là một lớp cơ sở ..

+0

cảm ơn bạn, tôi nên tạo đối tượng ở đâu? trong việc triển khai WinForm? – Saja

+0

trong tệp .cs có. Bạn nên tạo một đối tượng trong lớp con. –

4

Look, bạn có một lớp cơ sở trừu tượng:

public abstract class Good { } 

Và ở đó bạn có các lớp học được đặt tên của bạn:

public class Egg : Good { } 

public class Milk : Good { } 

public class Rice : Good { } 

Bây giờ bạn có thể thêm Các thuộc tính và phương thức cho lớp cơ sở Tốt.

Bây giờ bạn cũng có thể thêm thuộc tính và phương pháp để các tên lớp trứng, sữa, và gạo :)

Bây giờ bạn cũng có thể có nhiều trứng, sữa và gạo, nếu bạn đổi tên Goods-Good:

var allGoods = new List<Good>(); 

var eggs = new Egg[16]; 
allGoods.Add(eggs); 

var milk = new Milk[64]; 
allGoods.Add(milk); 

var rice = new Rice[64]; 
allGoods.Add(rice); 
Các vấn đề liên quan