Yes it is required. This is how OOP is expected to work.
Assume the parent class has two variables “a and b”, and the child class has an extra variable “c”. This do_copy method first calls the parents do_copy method (i.e, super.do_copy) so that it may copy a and b variables from rhs.a and rhs.b. After it is done the current do_copy method will copy “C” from rhs.c