У меня проблемы с пониманием наследования некоторых полей классов.В случае поля, которое есть во всех подклассах, но отличается во всех них, как мне его кодировать?
Должен ли я кодировать так:
class Product {
private String name;
double tax;
Product(String name) {
this.name = name;
}
}
class CarProduct extends Product {
CarProduct(String name) {
super(name);
this.tax = 0.2;
}
}
class PharmacyProduct extends Product {
PharmacyProduct(String name) {
super(name);
this.tax = 0.05;
}
}
Или вот так?Что является более правильным?
class Product {
private String name;
Product(String name) {
this.name = name;
}
}
class CarProduct extends Product {
private double tax;
CarProduct(String name) {
super(name);
this.tax = 0.2;
}
}
class PharmacyProduct extends Product {
private double tax;
PharmacyProduct(String name) {
super(name);
this.tax = 0.05;
}
}
Обновление после комментария @JB Nizet, Я изменил способ установки значения налога для каждого подкласса:
class Product {
private String name;
private double tax;
Product(String name) {
this.name = name;
}
setTax(double tax) {
this.tax = tax;
}
}
class CarProduct extends Product {
CarProduct(String name) {
super(name);
this.setTax(0.5);
}
}
class PharmacyProduct extends Product {
PharmacyProduct(String name) {
super(name);
this.setTax(0.05);
}
}
Это лучше, чем предыдущие два?