Ребят , не пойму почему мы имеем право писать так System.out.println(beer.toString()) - вызывать метод toString() - ведь при создании объекта мы записали ссылку на него в Drink
Drink beer = new AlcoholicBeer() - то есть мы можем вызвать у этого объекта только те методы которые определены в Drink - то есть только isAlcoholic() , но компилятор и toString() пропускает - почему так ?
package com.javarush.task.task13.task1302;
/*
Пиво-2. Возвращение
*/
public class Solution {
public static void main(String[] args) throws Exception {
Drink beer = new AlcoholicBeer();
System.out.println(beer.toString());
}
public interface Drink {
boolean isAlcoholic();
}
public static class AlcoholicBeer implements Drink{
public boolean isAlcoholic(){return true;}
public String toString() {
if (isAlcoholic()) {
return "Напиток алкогольный";
} else {
return "Напиток безалкогольный";
}
}
}
}