Саму задачу я розвязал, но меня интересует данный момент:
if(object instanceof Drawable){
((Drawable) object).draw();
}
Я пишу условие "(object instanceof Drawable)", тоесть идет проверка является ли object типом Drawable.
Потом идет сам код "((Drawable) object).draw();" и вот что интересно вот это (Drawable) пишется перед object пишется, что бы проверить является ли object типом Drawable. А это разве не тавтология? Или я чего-то не до конца понимаю?package com.javarush.task.task14.task1412;
/*
Реализовать метод printMainInfo
*/
public class Solution {
public static void main(String[] args) {
Object obj = new Circle();
Movable movable = (Movable) obj;
Drawable drawable = new Rectangle();
printMainInfo(drawable);
printMainInfo(movable);
}
public static void printMainInfo(Object object) {
if(object instanceof Drawable){
((Drawable) object).draw();
}
if(object instanceof Movable){
((Movable) object).move();
}
}
static interface Movable {
void move();
}
static class Circle implements Movable {
public void draw() {
System.out.println("can be drawn");
}
public void move() {
System.out.println("can be moved");
}
}
static interface Drawable {
void draw();
}
static class Rectangle implements Drawable {
public void draw() {
System.out.println("can be drawn");
}
public void move() {
System.out.println("can be moved");
}
}
}