2011-09-21 27 views
5

Với biểu diễn UML sau đây, làm thế nào tôi có thể nhận được một cá thể của một BullDog, mà chỉ có phương thức getter tiếp xúc?Tạo bản sao chỉ đọc của một lớp, cách

  • Trường hợp của BullDog không được có bất kỳ phương pháp setter nào có sẵn.
  • Instance của BullDog chỉ nên có phương pháp getter (3 trong số họ) có sẵn

Về cơ bản câu hỏi là .. những gì tôi đúc new BullDog tới?

enter image description here

+0

btw ... nếu myDog.getMetabolism() trở lại như một thứ "không lành mạnh". Tên giao diện của bạn sẽ là kiểu phản trực quan – Shawn

+0

và tại sao chỉ có vật nuôi khỏe mạnh mới có được sự trao đổi chất? Chắc chắn tất cả các vật nuôi có thể trở lại một tỷ lệ trao đổi chất và chỉ sau đó có thể được xác định sức khỏe. –

Trả lời

4

Kể từ HealthyPet và thú nuôi không liên quan không có gì bạn có thể cast vào đó sẽ cung cấp cho bạn tất cả 3 phương pháp getter (getMetabolism(), getName() và getAge()) là. Bây giờ nếu HealthyPet mở rộng Pet (và tôi thực sự không chắc chắn lý do tại sao nó không) bạn muốn được trong kinh doanh. Bởi vì sau đó bạn có thể truyền đến HealthyPet, trả về giao diện đó và người gọi sẽ chỉ nhìn thấy 3 phương thức getter (tất nhiên tôi đang nói mà không có sự tò mò lạ mắt nào cho phép họ khám phá mọi thứ).

+0

Tuyệt vời. Cảm ơn ngài! – JAM

1

Bạn cần HealthyPet để mở rộng Thú cưng. Sau đó, bạn cast dụ BullDog của bạn để HealthyPet.

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