Типизация объектов

1

В следующем коде:

A tat = new P();

P bat = (P) tat;

является typecasting tat: P bat = (P) tat;

то же самое: P tat = new P();

Можете ли вы также сказать в теории, что: P bat = ( P tat = new P(); )

  • 0
    То же самое, за исключением того, что tat будет определенно P вместо предположительно более общего A
  • 0
    bat будет P в обоих случаях. Вам не нужно будет опускать руки, чтобы назначить tat bat .
Теги:
object

2 ответа

1
Лучший ответ

Ответ да, но P bat = ( P tat = new P(); ) недействителен код Java и не компилируется.

Вы должны определить их, используя два оператора:

P bat, tat;
bat = tat = new P();
  • 0
    Или фактически в одной строке: P bat, tat = bat = new P();
0

В вашем примере вам нужно иметь в виду, что, хотя tat действительно является экземпляром P, он имеет интерфейс, определенный A (предполагая, что P расширяет или реализует A, иначе это не сработало).

После этого bat будет ссылкой на тот же объект, на который ссылается tat, однако он будет доступен через интерфейс, определенный P

  • 0
    Да, извините, P расширяет А в моем примере.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню