public abstract class Client {
public Client(double balance) {
this.balance = balance;
}
private double balance;
public double getBalance() {return balance;}
public void takeMoney(double withdraw){
balance -= withdraw;
}
public void giveMoney(double amount){
balance += amount;}
public void printCount(){
System.out.println(balance);
}
}
Первый наследник работает.
public class ClientPerson extends Client {
public ClientPerson(double balance) {
super(balance);
}
}
Но, если переопределять метод, переменную balance в методе не видит. Как cделать этот метод рабочим?
public class ClientCompany extends Client {
public ClientCompany(double balance) {
super(balance);
}
@Override
public void takeMoney(double withdraw) {
balance -= (withdraw * 1.01);
}
}
У вас же есть интерфейсная часть базового класса, который в свою очередь инкапсулирует свое состояние и имеет некоторое поведение (через свои методы).
Вот и используйте их, иначе зачем они нужны?:
public class ClientCompany extends Client {
public ClientCompany(double balance) {
super(balance);
}
@Override
public void takeMoney(double withdraw) {
super.takeMoney(withdraw * 1.01);
}
}
А лучше так (без магии):
public class ClientCompany extends Client {
private double interestRate = 1.01;
void setInterestRate(double value) {
this.interestRate = value;
}
double getInterestRate() {
return this.interestRate;
}
@Override
public void takeMoney(double withdraw) {
super.takeMoney(withdraw * this.interestRate);
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Несколько раз встречал в таблицах базы, относящейся к веб-приложению на Java, столбцы, играющие роль флага, но имеющие не привычный тип bool, а smallint...
Похоже ошибка в неправильном использовании if (actionequals("back")){continue;}