Bird
Raised Fist0
Rubyprogramming~5 mins

Inherited hook in Ruby - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the inherited hook in Ruby?
The <code>inherited</code> hook is a special method in Ruby that is called automatically whenever a subclass is created from a class. It lets the parent class react to the creation of its child classes.
Click to reveal answer
beginner
How do you define an inherited hook in a Ruby class?
You define a class method named <code>self.inherited(subclass)</code> inside the parent class. Ruby calls this method with the new subclass as the argument whenever a subclass is created.
Click to reveal answer
intermediate
What can you do inside the inherited hook?
Inside the inherited hook, you can run code to customize or track subclasses. For example, you can add methods, set variables, or keep a list of all subclasses.
Click to reveal answer
beginner
Example: What will this code print?<br><pre>class Parent
  def self.inherited(subclass)
    puts "New subclass: #{subclass}"
  end
end

class Child < Parent
end</pre>
It will print:
New subclass: Child
This happens because when Child inherits from Parent, the inherited hook runs and prints the message.
Click to reveal answer
intermediate
Why is the inherited hook useful in Ruby?
It helps you automatically run code when new subclasses are made. This is useful for tracking subclasses, adding shared behavior, or setting up configurations without changing each subclass manually.
Click to reveal answer
What argument does the inherited hook receive?
AThe parent class
BThe new subclass
CAn instance of the subclass
DNo arguments
Where do you define the inherited method?
AInside an instance method
BInside the subclass
COutside any class
DInside the parent class as a class method
What happens when a subclass is created and the parent class has an inherited hook?
AThe <code>inherited</code> method runs automatically
BThe subclass is deleted
CNothing special happens
DThe parent class is redefined
Which of these is a common use of the inherited hook?
ATo track all subclasses
BTo create instances
CTo override instance methods
DTo delete subclasses
Can the inherited hook modify the subclass?
AYes, but only instance methods
BNo, it only reads subclass info
CYes, it can add methods or variables
DNo, it only runs after subclass is deleted
Explain what the inherited hook does in Ruby and give a simple example.
Think about what happens when you create a new subclass.
You got /3 concepts.
    Describe a practical use case for the inherited hook in a Ruby program.
    Why would you want to know when a subclass is created?
    You got /3 concepts.

      Practice

      (1/5)
      1. What does the inherited hook method do in Ruby?
      easy
      A. It is called automatically when a subclass is created.
      B. It runs when an instance of a class is created.
      C. It is used to define class variables.
      D. It is called when a method is overridden.

      Solution

      1. Step 1: Understand the purpose of inherited

        The inherited method is a special hook in Ruby that triggers when a subclass is created from a parent class.
      2. Step 2: Differentiate from other hooks

        It is not related to instance creation, method overriding, or variable definition, but specifically to subclass creation.
      3. Final Answer:

        It is called automatically when a subclass is created. -> Option A
      4. Quick Check:

        Inherited hook = called on subclass creation [OK]
      Hint: Inherited hook triggers only on subclass creation [OK]
      Common Mistakes:
      • Confusing inherited with initialize method
      • Thinking it runs on instance creation
      • Mixing it with method override hooks
      2. Which of the following is the correct way to define an inherited hook in a Ruby class?
      easy
      A. def self.inherited; puts "New subclass created"; end
      B. def inherited(self); puts "New subclass created"; end
      C. def inherited(subclass); puts "New subclass created"; end
      D. def self.inherited(subclass); puts "New subclass created"; end

      Solution

      1. Step 1: Recognize the method signature

        The inherited hook must be defined as a class method, so it needs self.inherited and takes one argument: the subclass.
      2. Step 2: Check method parameters and syntax

        def self.inherited(subclass); puts "New subclass created"; end correctly defines the class method with the subclass parameter. Incorrect versions lack self. (instance method), omit the subclass parameter, or use wrong parameters like self.
      3. Final Answer:

        def self.inherited(subclass); puts "New subclass created"; end -> Option D
      4. Quick Check:

        Class method with subclass param = def self.inherited(subclass); puts "New subclass created"; end [OK]
      Hint: Inherited hook is a class method with subclass param [OK]
      Common Mistakes:
      • Defining inherited as instance method
      • Omitting the subclass parameter
      • Forgetting self. for class method
      3. What will be the output of this Ruby code?
      class Parent
        def self.inherited(subclass)
          puts "Subclass: #{subclass}"
        end
      end
      
      class Child < Parent
      end
      medium
      A. No output
      B. Subclass: Child
      C. Subclass: Parent
      D. SyntaxError

      Solution

      1. Step 1: Understand when inherited runs

        The inherited method in Parent runs automatically when a subclass is created.
      2. Step 2: Identify subclass creation

        When Child < Parent is declared, Parent.inherited(Child) is called, printing "Subclass: Child".
      3. Final Answer:

        Subclass: Child -> Option B
      4. Quick Check:

        Subclass creation triggers inherited hook output [OK]
      Hint: Inherited prints subclass name on subclass creation [OK]
      Common Mistakes:
      • Expecting output on instance creation
      • Confusing subclass with parent class name
      • Thinking no output occurs
      4. Identify the error in this Ruby code using the inherited hook:
      class Base
        def inherited(subclass)
          puts "Subclass created: #{subclass}"
        end
      end
      
      class Derived < Base
      end
      medium
      A. The inherited method should be a class method with self.
      B. The subclass parameter is missing.
      C. The puts statement syntax is incorrect.
      D. Derived class should not inherit from Base.

      Solution

      1. Step 1: Check method definition context

        The inherited hook must be a class method, so it requires def self.inherited(subclass).
      2. Step 2: Identify the error in the code

        Here, inherited is defined as an instance method, missing self., so it won't be called on subclass creation.
      3. Final Answer:

        The inherited method should be a class method with self. -> Option A
      4. Quick Check:

        Inherited hook must be class method [OK]
      Hint: Inherited must be defined with self. to work [OK]
      Common Mistakes:
      • Defining inherited as instance method
      • Omitting self. in method definition
      • Misunderstanding inherited hook usage
      5. How can you use the inherited hook to automatically add a class variable @@subclasses that tracks all subclasses of a parent class?
      hard
      A. Use initialize method to track subclasses in @@subclasses.
      B. Define an instance method inherited to add subclass to @@subclasses.
      C. Define self.inherited(subclass) to append subclass to @@subclasses array.
      D. Manually add subclasses to @@subclasses outside the class.

      Solution

      1. Step 1: Understand subclass tracking

        To track subclasses, use a class variable @@subclasses initialized as an array in the parent class.
      2. Step 2: Use inherited hook to update tracking

        Define self.inherited(subclass) to append the new subclass to @@subclasses automatically when a subclass is created.
      3. Final Answer:

        Define self.inherited(subclass) to append subclass to @@subclasses array. -> Option C
      4. Quick Check:

        Inherited hook + class variable tracks subclasses [OK]
      Hint: Use inherited hook to update subclass list automatically [OK]
      Common Mistakes:
      • Using instance methods to track subclasses
      • Tracking subclasses in initialize method
      • Forgetting to initialize @@subclasses as array
      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