Skip to content

Instantly share code, notes, and snippets.

@hightemp
Created April 22, 2014 15:12
Show Gist options
  • Save hightemp/11183068 to your computer and use it in GitHub Desktop.
Save hightemp/11183068 to your computer and use it in GitHub Desktop.
[tutorials]
class ClassA
@@class_var1 = 1
@var1 = -1
class << self
attr_accessor :attr_var1
def class_method1
puts "\t#{self.class}.class_method1"
puts "\t\t@var1: #{@var1}"
end
end
def method1
puts "\t#{self.class}.method1"
@var1 = 1
ClassA.attr_var1 = 1
puts "\t\t@var1: #{@var1}"
puts "\t\tClassA.attr_var1: #{ClassA.attr_var1}"
end
def method2
puts "\t#{self.class}.method2"
end
end
class ClassB < ClassA
attr_accessor :var2, :var3
class << self
attr_accessor :var2
end
@@class_var2 = 2
@var2 = -2
def method1
puts "parent method:"
super
puts "child method:"
puts "\t#{self.class}.method1"
@var2 = 2
puts "\t\tClassB.var2: #{ClassB.var2}"
puts "\t\t@var1: #{@var1}"
puts "\t\t@@class_var1: #{@@class_var1}"
puts "\t\tClassB.attr_var1: #{ClassB.attr_var1}"
puts "\t\t@var2: #{@var2}"
puts "\t\t@@class_var2: #{@@class_var2}"
end
end
A = ClassA.new
B = ClassB.new
puts "A class:"
A.method1
ClassA.class_method1
A.var1 *= 4
puts "\tA.var1: #{A.var1}"
puts "\tClassA.attr_var1: #{ClassA.attr_var1}"
puts "\tA.instance_variables: #{A.instance_variables}"
puts "\tClassA.instance_variables: #{ClassA.instance_variables}"
puts "\tClassA.class_variables: #{ClassA.class_variables}"
puts
puts "B class:"
B.method1
B.method2
B.var1 *= 5
B.var2 += 6
B.var3 = 7
puts "\tB.var1: #{B.var1}"
puts "\tB.var2: #{B.var2}"
puts "\tB.var3: #{B.var3}"
puts "\tClassB.attr_var1: #{ClassB.attr_var1}"
puts "\tB.instance_variables: #{B.instance_variables}"
puts "\tClassB.instance_variables: #{ClassB.instance_variables}"
puts "\tClassB.class_variables: #{ClassB.class_variables}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment