Я создал 3 абстрактных класса:
class Статья: mother Class
public abstract class Article{
//myPrivate Var Declarations
public Article(long reference, String title, float price, int quantity){
this.reference = reference;
this.title = title;
this.price = price;
this.quantity = quantity;
}
}
класс Electromenager: дочерний элемент статьи
public abstract class Electromenager extends Article{
//myVar declarations
public Electromenager(long reference, String title, float price, int quantity, int power, String model) {
super(reference, title, price, quantity);
this.power = power;
this.model = model;
}
}
Class Alimentaire: еще один ребенок статьи
public abstract class Alimentaire extends Article{
private int expire;
public Alimentaire(long reference, String title, float price, int quantity,int expire){
super(reference, title, price, quantity);
this.expire = expire;
}
}
Давайте просто предположим, что эти классы должны быть абстрактными, поэтому в основном в основном классе я не могу напрямую создавать экземпляры их объектов, поэтому нам нужно сделать некоторые базовые расширения ..:
class TV extends Electromenager {
public TV(long reference, String title, float price, int quantity, int power, String model){
super(reference,title,price,quantity,power,model);
}
}
class EnergyDrink extends alimentaire {
public EnergyDrink(long reference, String title, float price, int quantity,int expire){
super(reference,title,price,quantity,expire);
}
}
Итак, здесь начинается мое замешательство! при написании этого в main ():
Article art = new TV (145278, "OLED TV", 1000 , 1 ,220, "LG");
EnergyDrink art2 = new EnergyDrink (155278 , "Eau Miniral" , 6 , 10, 2020);
На удивление я получаю нулевую ошибку !!!! не следует набирать::
TV art = new TV (145278, "OLED TV", 1000 , 1 ,220, "LG");
//instead of
Article art = new TV (145278, "OLED TV", 1000 , 1 ,220, "LG");
Почему оба написания верны? А как это понимает компилятор Java?
Article
является базовым классом дляTV
, поэтому объекты базового класса могут содержать ссылку на дочерний класс, который расширяется базовым классом. - person dbw   schedule 21.01.2016TV
также являетсяArticle
, поэтому вы можете назначить экземплярTV
в переменной, определенной какArticle
. - person SomeJavaGuy   schedule 21.01.2016