0

Java: How can the object of parent class call the parameterized constructor of child class while it's not the other way around?

Printer is a Class ans PrinterCumClass is the child class.... This is the main piece of code: int PRINTERNUMBER=3; Printer[] stock=new Printer[PRINTERNUMBER]; stock[0]=new PrinterCumClass("Hp",20,20.5,320.5); stock[1]=new PrinterCumClass("Cannon",30,20.5,146.5); Here we can see that Printer's obj is able to call child class's Constructor but it's not the other way around? How & Why? Please explain

26th Apr 2022, 9:36 PM
Farzam Baig
4 ответов
+ 1
Post the code. You say stuff but without the code we can't know if it's the case. Atleast the class declarations.
26th Apr 2022, 10:15 PM
William Jönsson
William Jönsson - avatar
0
William Jönsson here's the complete code: public class PrinterTest { public static void main(String[] args) { int PRINTERNUMBER=3; Printer[] stock=new Printer[PRINTERNUMBER]; stock[0]=new PrinterCumClass("Hp",20,20.5,320.5); stock[1]=new PrinterCumClass("Cannon",30,20.5,146.5); for (Printer astock : stock) { System.out.println(astock); } } } public class Printer { String name; int qunatity; double price; public Printer(String name, int qunatity, double price) { this.name = name; this.qunatity = qunatity; this.price = price; } @Override public String toString() { return "name = " + name + "qunatity = " + qunatity + "price = " + price ; } } public class PrinterCumClass extends Printer { double imagedpi; public PrinterCumClass(String name, int qunatity, double price,double dpi) { super(name, qunatity, price);
26th Apr 2022, 10:37 PM
Farzam Baig
0
Ok I get what you mean now. What you are doing when declaring the array (not object) is: "Printer[] stock" which means this is an array of Printer objects. And PrinterCumClass is a Printer object so then it works. Imagine we have Animal and Dog. Animal[] stock stock[0] = new Dog We can put a Dog inside the Animal array since Dog is an Animal.
26th Apr 2022, 10:46 PM
William Jönsson
William Jönsson - avatar
0
> "Here we can see that Printer's obj is able to call child class's Constructor" Printer[] stock = new Printer[PRINTERNUMBER]; stock[0] = new PrinterCumClass("Hp",20,20.5,320.5); it is not able, First you create object of PrinterCumClass, as child child calls super() constructor of parent Printer then object is assing to array of Printer[] where you call child ?
27th Apr 2022, 4:50 AM
zemiak