Я понимаю, что при создании нового объекта, таких, как это:Заявленные типы и фактические типы
GeomObject tri = new Triangle();
является более общим и позволяет более resuability, но то, что происходит, когда три создается следующим образом:
Triangle tri = new Triangle();
Поскольку Triangle является подклассом GeomObject, не является ли все еще объектом GeomObject? Как объявленный тип влияет на компиляцию? Благодаря
* добавить: дополнительный вопрос: у меня есть
Integer n1 = new Integer(3);
Object n2 = new Integer(4);
System.out.println(n1.compareTo(n2));
Я попробовал это на Eclipse, и я получил ошибки, даже если я обращенных n1 с n2. Я думал, что n2.compareTo (n1) будет работать, потому что он будет вызывать метод Object CompareTo, и поскольку Integer является экземпляром объекта, он будет проходимым, но это не так. Не могли бы вы объяснить это?
добавил к оригинальному вопросу * – xheyhenry
@xheyhenry, пожалуйста, отредактируйте свой вопрос соответственно и ** добавьте * (не удаляйте ничего) новую часть вопроса, затем я отредактирую свой ответ. –
@xheyhenry ответ обновлен. –