Bird
Raised Fist0
Rubyprogramming~10 mins

Super keyword behavior in Ruby - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to call the parent class method using super.

Ruby
class Parent
  def greet
    puts "Hello from Parent"
  end
end

class Child < Parent
  def greet
    [1]
  end
end

Child.new.greet
Drag options to blanks, or click blank then click option'
Aself
Bsuper()
Cparent
Dsuper
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'self' instead of 'super' to call the parent method.
Using 'parent' which is not a Ruby keyword.
Using 'super' without parentheses when arguments are expected.
2fill in blank
medium

Complete the code to pass arguments to the parent method using super.

Ruby
class Parent
  def initialize(name)
    @name = name
  end
end

class Child < Parent
  def initialize(name, age)
    [1]
    @age = age
  end
end

child = Child.new("Alice", 10)
Drag options to blanks, or click blank then click option'
Asuper(name)
Bsuper()
Csuper(name, age)
Dsuper
Attempts:
3 left
💡 Hint
Common Mistakes
Calling super() without arguments when parent expects one.
Passing both name and age to super when parent expects only name.
Using super without parentheses which passes all arguments automatically.
3fill in blank
hard

Fix the error in calling super with arguments in the method below.

Ruby
class Parent
  def calculate(x, y)
    x + y
  end
end

class Child < Parent
  def calculate(x, y)
    result = [1]
    result * 2
  end
end

child = Child.new
puts child.calculate(3, 4)
Drag options to blanks, or click blank then click option'
Asuper(x, y)
Bsuper(x)
Csuper
Dsuper()
Attempts:
3 left
💡 Hint
Common Mistakes
Calling super() with no arguments when parent expects two.
Passing only one argument to super when two are needed.
Using super without parentheses which may cause confusion.
4fill in blank
hard

Fill both blanks to correctly override and extend the parent method.

Ruby
class Parent
  def info
    "Parent info"
  end
end

class Child < Parent
  def info
    parent_info = [1]
    "Child info and " + [2]
  end
end

puts Child.new.info
Drag options to blanks, or click blank then click option'
Asuper
Binfo
Cparent_info
Dsuper()
Attempts:
3 left
💡 Hint
Common Mistakes
Using info instead of super to call parent method.
Using super() without assigning to a variable.
Using the wrong variable name in string concatenation.
5fill in blank
hard

Fill all three blanks to correctly use super with arguments and extend the method.

Ruby
class Parent
  def multiply(a, b)
    a * b
  end
end

class Child < Parent
  def multiply(a, b)
    base = [1]
    addition = [2] + [3]
    base + addition
  end
end

puts Child.new.multiply(3, 4)
Drag options to blanks, or click blank then click option'
Asuper(a, b)
Ba
Cb
Dsuper()
Attempts:
3 left
💡 Hint
Common Mistakes
Calling super() without arguments when parent expects two.
Using wrong variables for addition.
Not calling super at all.

Practice

(1/5)
1. What does the super keyword do in Ruby?
easy
A. Creates a new instance of the parent class
B. Overrides the parent class's method permanently
C. Calls the parent class's method with the same name
D. Deletes the parent class's method

Solution

  1. Step 1: Understand the role of super

    The super keyword is used inside a child class method to call the method with the same name from its parent class. It does not create, override, or delete methods but simply calls the parent method to reuse or extend its behavior.
  2. Final Answer:

    Calls the parent class's method with the same name -> Option C
  3. Quick Check:

    super calls parent method [OK]
Hint: Remember: super calls parent method with same name [OK]
Common Mistakes:
  • Thinking super creates or deletes methods
  • Confusing super with instance creation
  • Assuming super overrides methods permanently
2. Which of the following is the correct syntax to call the parent method with no arguments using super?
easy
A. super()
B. super[]
C. super
D. super{}

Solution

  1. Step 1: Understand super with parentheses

    Using super() calls the parent method explicitly with no arguments, ignoring any current method arguments. Only super() uses parentheses correctly to pass no arguments; other forms are invalid syntax.
  2. Final Answer:

    super() -> Option A
  3. Quick Check:

    super() means no arguments [OK]
Hint: Use parentheses to call parent with no args: super() [OK]
Common Mistakes:
  • Using super without parentheses to mean no arguments
  • Using brackets or braces instead of parentheses
  • Confusing super() with super without parentheses
3. What will be the output of this Ruby code?
class Parent
  def greet(name)
    "Hello, #{name} from Parent"
  end
end

class Child < Parent
  def greet(name)
    super + " and Child"
  end
end

puts Child.new.greet("Alice")
medium
A. Hello, Alice from Parent and Child
B. Hello, Alice from Child
C. Hello, from Parent and Child
D. Error: wrong number of arguments

Solution

  1. Step 1: Trace the method call in Child#greet

    The Child's greet method calls super without parentheses, so it passes the argument "Alice" to Parent#greet. Parent#greet returns "Hello, Alice from Parent". Child appends " and Child" to this string.
  2. Final Answer:

    Hello, Alice from Parent and Child -> Option A
  3. Quick Check:

    super passes args, output combines strings [OK]
Hint: super without () passes all args automatically [OK]
Common Mistakes:
  • Assuming super passes no arguments by default
  • Expecting an error due to argument mismatch
  • Ignoring the appended string in Child method
4. Identify the error in this Ruby code:
class Parent
  def initialize(age)
    @age = age
  end
end

class Child < Parent
  def initialize
    super
    @name = "Child"
  end
end

Child.new
medium
A. NameError for @name variable
B. No error, code runs fine
C. SyntaxError due to missing parentheses
D. ArgumentError: wrong number of arguments for super

Solution

  1. Step 1: Check Parent initialize method

    Parent's initialize requires one argument age. Child's initialize calls super without arguments, so it tries to call Parent's initialize with zero arguments, causing an ArgumentError.
  2. Final Answer:

    ArgumentError: wrong number of arguments for super -> Option D
  3. Quick Check:

    super must match parent args or use super() [OK]
Hint: super without args passes current args; mismatch causes error [OK]
Common Mistakes:
  • Assuming super() passes parent's required args automatically
  • Ignoring that Parent requires an argument
  • Thinking missing parentheses cause syntax error here
5. Given this code, what will Child.new.greet output?
class Parent
  def greet(name = "Guest")
    "Hello, #{name} from Parent"
  end
end

class Child < Parent
  def greet(name = nil)
    if name
      super(name.upcase)
    else
      super()
    end
  end
end

puts Child.new.greet
puts Child.new.greet("alice")
hard
A. Hello, from Parent Hello, alice from Parent
B. Hello, Guest from Parent Hello, ALICE from Parent
C. Hello, Guest from Parent Hello, alice from Parent
D. Error due to wrong arguments in super calls

Solution

  1. Step 1: Analyze Child#greet with no argument

    When called without argument, name is nil, so super() calls Parent#greet with no arguments, using default "Guest". When called with "alice", name.upcase is "ALICE" passed to super(name.upcase), so Parent#greet returns "Hello, ALICE from Parent".
  2. Final Answer:

    Hello, Guest from Parent Hello, ALICE from Parent -> Option B
  3. Quick Check:

    super() calls parent with defaults; super(args) passes modified args [OK]
Hint: Use super() for no args, super(args) to pass specific args [OK]
Common Mistakes:
  • Assuming super() passes current args
  • Ignoring default parameter in Parent#greet
  • Not uppercasing the argument before passing
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard