Таким образом, я получил этот код в папке с кусками, которые должны были быть для проекта, который с тех пор остановил развитие. Однако, будучи новым для Java, есть несколько вопросов, которые у меня есть (и я знаю, что код не компилируется, но это работает в одном из моих вопросов).Наследование классов и литье
interface Executable {
public int execute (Object o);
}
public class Biv implements Executable {
public int execute (String s) {
System.out.println (s);
return s.length();
}
public static void main (String[] args) {
Executable e = new Biv();
System.out.println(
e.execute ("Hello World!"));
}
}
1) Мой первый вопрос должен сделать с переменной е. Он объявляется с типом объекта Executable, однако я не понимаю, почему его можно создать с помощью нового объекта Biv. Что здесь происходит, что это значит?
2) Ошибка в методе выполнения в классе Biv. Кажется, это связано с тем, что он ожидает объект, а не строку. Однако не можете ли вы заменить объект на String, потому что String является подклассом Object? Я мог бы понять, если вы замените String на Object, у него будет ошибка (я думаю), но не как это делается в настоящее время.
Следует отметить, что подпись не обязательно должна быть идентичной; типы параметров могут быть «ослаблены». Например, если метод в интерфейсе взял строку «String», вы могли бы использовать метод в «Biv» для «Object». – Maxpm
@Maxpm: Это неправда. – Natix
@natix Я стою исправлено. – Maxpm