Почему вы хотите это сделать?Задача абстрактных / сопряженных классов - взломать строго типизированные языки в динамическую парадигму.Если вам нужно, чтобы ваш класс вписался в сигнатуру, назовите ваши методы в соответствии с исходным классом или создайте фасад и подключите его, не нужно обманывать компилятор, он просто работает.
def my_printer obj
p obj.name
end
Таким образом, я определил интерфейс как любой объект со свойством name
class person
attr_accessor :name
def initialize
@name = "Person"
end
end
class Employee
attr_accessor :name
def initialize
@name = "Employee"
@wage = 23
end
end
, поэтому ничто не мешает нам вызывать наш метод принтера с любым из этих
my_printer Person.new
my_printer Employee.new
, оба печатают там имена безсцепка: D