2016-07-19 4 views

ответ

1

Я думаю, что происходит то, что вы создаете obj1 как экземпляр c1, а затем пытаетесь передать его классу дальше по цепочке наследования, чем c1.

В первом примере c1 является базовым типом c3, поэтому вы можете создать экземпляр c3, где тип c1..что это прекрасно. c3 является дочерним элементом c1 и поэтому наследует все его свойства и методы.

Во втором примере, однако, вы создаете экземпляр c1 с типом c1. Затем вы пытаетесь передать его своему ребенку. У дочернего класса могут быть дополнительные свойства и методы, которых у родителя нет.

Подводя итог, ребенок может быть своего родительского типа и подвергать его воздействию, однако родитель не может быть его дочерним элементом и не может быть отлит как таковой.

Если вам нужно уточнить, то дайте мне знать.

+0

Это очень помогло мне. Спасибо :) –

+0

Добро пожаловать. Рад помочь :) –

+0

@ Literallyluke, можете ли вы также включить разницу между «типом» и «экземпляром»? Что они на самом деле выводят? Например, c1 obj = new c3(); Здесь c1 является «типом», а c3 является «экземпляром». –

Смежные вопросы