Здесь под потоком исполнения,
шаг 1: когда «SpecialCube specialObj1 = новый SpecialCube ();» будет выполнен конструктор по умолчанию "SpecialCube ()".
Шаг 2: Теперь «Super ()» будет вызываться для вызова «Cube» суперкласса SpecialCube.
Шаг 3: Теперь будет выполнено «this (10,10)» в суперклассе «cube», который вызовет конструктор 2 параметров из того же класса «cube», т.е. «Cube (int l, int b)». «путем передачи параметров (l = 10, b = 10).
Шаг 4: Теперь "this (l, b, 10) будет выполняться с фактическим параметром, переданным на шаге № 3, это" this (10,10,10) ", который вызовет 3-параметризованный конструктор" Cube (int l "). , int b, int h) ", с передачей значений из шага # 3 это будет похоже на" Cube (int l = 10, int b = 10, int h = 10) ".
Шаг 5: переменные экземпляра, такие как длина = 10, ширина = 10, высота = 10 для объекта «specialObj1», созданного на шаге № 1.
Шаг 6: Тогда java назначит переменную «Weight» как 10 в конструкторе «SpecialCube ()». (См. Шаг № 1)
Теперь посмотрим выполнение метода для объекта "SpecialCube ()" (я просто рассматриваю только "specialObj1".
Шаг 7: System.out.println («Том SpecialCube1 is:» + specialObj1.getVolume ()); Когда этот оператор выполнится, java вызовет метод суперкласса "Cube" "getVolume ()", поскольку подкласс "SpecialCube" наследует его по ключевому слову "extends", см. ниже в вашем подклассе.
открытый класс SpecialCube расширяет Cube
шаг 8: Шаг 1 - 5, уже назначенная переменная экземпляра как «длина = 10, ширина = 10, высота = 10», ваш получаемый объем как «1000».
шаг 9: "System.out.println (" Weight of SpecialCube1 is: "+ specialObj1.weight); - этот оператор выводит значение переменной" weight "как" 10 "из-за шага № 6.
Надеюсь, это объяснит причину. Попробуйте тот же поток для объекта "specialObj2".