Tujuan saya adalah membuat Produk kelas super

Dengan objek berbeda yang dibuat dengan superclass ini, misalnya:

  • USB stick 8gb
  • HHD 1tb
  • SSD 512gb

Semua dengan nilai yang berbeda (seperti harga).

Dan sub-kelas untuk membuat objek yang berbeda dari produk tersebut (dalam kasus misalnya USB stick 8gb: Saya memiliki total 5 (objek): 1. baru, 2. bekas, 3. bekas , 4. baru, 5. baru)

Dengan versi saya (lihat di atas), Anda selalu perlu memberikan setiap versi (1-5) parameter yang sama

Item usbstick1;
usbstick1 = new Item(50, "3.0 USB-Stick with 8 Gigybytes of storage", true)

Bagaimana saya mencapai:

A) Hanya menempatkan referensi dari "produk" yang sudah dibuat (seperti USB Stick 8gb) setiap kali Anda membuat objek subkelas baru?

B) Bagaimana cara menggunakan referensi ini untuk sub-kelas yang berbeda?

Jika saya memiliki kelas super . ini

public class Product {

    double price
    String description

    public Item(double price, String description) {
        setPrice(price);
        setDescription(descrition);
    }

    setPrice(double newPrice) {
        price=newPrice;
    }
    public void setDescription(String newDescription) {
        description=newDescription;
    }

Subkelas . ini

public class Item extends Product {
    boolean sealed;

    public Item(double price, String description, boolean sealed) {
        super(price, description);
        setSealed(sealed);
    }

    public void setSealed(newSealed) {
        sealed=newSealed;
    }

Aa serta subkelas ini

public class UsedItem extends Product {
    int usedDays;

    public UsedItem(double price, String description, int usedDays) {
        super(price, description);
        setUsedDays(usedDays);
    }

    public void setUsedDays(newUsedDays) {
        usedDays=newUsedDays;
    }    
0
Chris F 10 November 2017, 03:46

1 menjawab

Jawaban Terbaik

Anda mungkin ingin mempertimbangkan untuk mengubah kelas UsedItem Anda agar memiliki turunan Produk, alih-alih memperluasnya, dan kemudian meneruskan produk dalam konstruktor:

public class UsedItem {

   Product product;
   int usedDays;

   public UsedItem(Product product) {
       this.product = product;
   }

   public void setUsedDays(newUsedDays) {
       usedDays=newUsedDays;
   }
}

Dan kemudian untuk membuat UsedItem baru, Anda dapat meneruskannya ke instance produk yang sama dengan yang Anda buat:

Item usbstick;
usbstick = new Item(50, "3.0 USB-Stick with 8 Gigybytes of storage", true);

UsedItem usb1 =  new UsedItem(usbstick);
UsedItem usb2 =  new UsedItem(usbstick);
UsedItem usb3 =  new UsedItem(usbstick);

Atau, Anda dapat mengatur item bekas Anda untuk mengambil Item dalam konstruktor dan mengatur nilainya dari itu:

public class UsedItem extends Item{

   public UsedItem(Product product) {
       super(product.price, product.description);
   }
}
0
luckydog32 10 November 2017, 01:04