interface Readable {
public void printTitle();
}
class WebText implements Readable {
public String title;
public void printTitle(){
System.out.println("This Webpage title is "+ title);
}
public void setTitle(String title){
this.title = title;
}
}
class Blog extends WebText {
public void printTitle(){
System.out.println("The Blog title is " + title);
}
}
class ReadingTester{
public static void main(String [] arg) {
Blog b1 = new Blog();
WebText b2 = new Blog();
b1.setTitle("How to upcast");
b2.setTitle("Dangers of upcasting");
b1.printTitle();
b2.printTitle();
}
}
Приведенный выше код относится к домашнему заданию, над которым я работаю, но я действительно не уверен в том, что происходит. Когда я запускаю код, он выдает:
Название блога: Как выгружать
Заголовок блога: Опасности переката
Почему я запутался, почему? второй выводит «Заголовок блога» вместо «Заголовок этой страницы:». Поскольку b2 преобразуется в WebText, не должен ли этот класс отвечать? Все, что я нахожу в Интернете, говорит, что апкастинг безопасен, но является ли это примером того, когда это не так? Я очень запутался и был бы очень признателен, спасибо большое!