Modules and Inheritance
Being Lazy
is what it’s all about
1
Inheritance
Everything is an Object
Inheritance Code Examples
class Person
attr_reader :first_name, :last_name
def initialize(first_name, last_name)
@first_name = first_name
@last_name = last_name
end
def full_name
"#{first_name} #{last_name}"
end
end
class Programmer < Person
end
inheriting functionality
from Person
Inheritance Code Examples
class Person
attr_reader :first_name, :last_name
def initialize(first_name, last_name)
@first_name = first_name
@last_name = last_name
end
def full_name
"#{first_name} #{last_name}"
end
end
class Programmer < Person
def full_name
"#{first_name} #{last_name}, coder of things!"
end
end
overriding a method
from Person
Inheritance Code Examples
class Person
attr_reader :first_name, :last_name
def initialize(first_name, last_name)
@first_name = first_name
@last_name = last_name
end
def full_name
"#{first_name} #{last_name}"
end
end
class Programmer < Person
def full_name
"#{super}, coder of things!"
end
end
using parent method output
in our new method
Inheritance Code Examples
class Person
attr_reader :first_name, :last_name
def initialize(first_name, last_name)
@first_name = first_name
@last_name = last_name
end
def greet(someone)
"Hi there #{someone}"
end
end
class Programmer < Person
def greet(someone)
"#{super(someone)}! Want to pair program?!"
end
end
using super with arguments
Inheritance Code Examples
class Person
attr_reader :first_name, :last_name
def initialize(first_name, last_name)
@first_name = first_name
@last_name = last_name
end
end
class Programmer < Person
def initialize(f_name, l_name, fav_language)
super(f_name, l_name)
@fav_language = fav_language
end
end
overriding initialize method
Inheritance Code Examples
class Person
attr_reader :first_name, :last_name
def initialize(first_name, last_name)
@first_name = first_name
@last_name = last_name
end
def full_name
"#{first_name} #{last_name}"
end
end
class Programmer < Person
def full_name
"#{super}, coder of things!"
end
def to_s
full_name
end
end
overriding a method
from Object
Practical Examples
Modules
Practical Examples
When to use modules and inheritance?