Ну, я знаю, что мой вопрос не так ясен. Горе со мной на минуту.Являются ли дочерние классы эквивалентными классу расинов с точки зрения объекта?
Я создал 3 абстрактные классы:
класса Статья: мать класса
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;
}
}
Класс 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);
}
}
Так здесь, где начинается мое замешательство! при написании этого в основном():
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 понимает это? Спасибо за помощь !
«Статья» - это базовый класс для 'TV', поэтому объекты базового класса могут содержать ссылку на дочерний класс, которые расширены базовым классом – dbw
Почему он не должен компилироваться? Из вашего определения «TV» также является «статьей», поэтому вы можете назначить экземпляр «TV» в переменной, определенной как «Статья». – SomeJavaGuy