Java - Можете ли вы привести объект в класс, который не расширяется? - PullRequest
0 голосов
/ 16 декабря 2010

Другой способ задать тот же вопрос, учитывая, что 2 класса A и B, является ли синонимом слова: «Объект A может быть преобразован в B» и «Объект A является потомком B»?

Спасибо

JDelage

Редактировать: Уточнил вопрос, чтобы прояснить, что и A, и B являются классами.

Ответы [ 5 ]

2 голосов
/ 16 декабря 2010

Если это не прямой потомок или нет реализация интерфейса

class A;
class B extends A;
A a = new B(); 

interface A;
class B implements A;
(A) B

В другой ситуации

Будет выброшено ClassCastException http://download.oracle.com/javase/1.4.2/docs/api/java/lang/ClassCastException.html

2 голосов
/ 16 декабря 2010

" Java - Можете ли вы привести объект в класс, который не расширяется? " - Нет, вы не можете.

" По сути, это синонимсказать: «Объект A может быть приведен к B» и «Объект A является прямым потомком B»? »- Да.Плюс в случае, когда A имеет класс, реализующий интерфейс B.

2 голосов
/ 16 декабря 2010

Нет, вы не можете. Выдает ClassCastException.

1 голос
/ 16 декабря 2010

Да, вы можете, если B - интерфейс, а A - реализация B

0 голосов
/ 16 декабря 2010

Предположим, у вас есть:

interface I {}
class A implements I {}
class B extends A {}
class C extends B {}

все следующие условия действительны:

(I)C;
(A)C;
(B)C;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...