Приведение типа в Java
Переменная типа родителя не даёт вызывать методы потомка.
Если в runtime там лежит Article, тип сужают
явным приведением в скобках:
class Post {
public String getTitle() {
return "post";
}
}
class Article extends Post {
public int getViews() {
return 10;
}
}
Создадим потомка, приведем ссылку к Article и выведем число
просмотров:
Post post = new Article();
Article article = (Article) post;
System.out.println(article.getViews());
Неверное приведение бросает ClassCastException.
Перед сужением типа имеет смысл проверить объект
через instanceof:
public class Main {
public static void main(String[] args) {
Post post = new Post();
if (post instanceof Article) {
Article article = (Article) post;
System.out.println(article.getViews());
}
}
}
После успешной проверки с образцом отдельное приведение в той же ветке часто не нужно - переменная уже имеет тип потомка.
Пусть переменная типа User
ссылается на объект класса
Employee.
Приведите переменную к типу
Employee и выведите на экран
зарплату сотрудника.