Pol*_*ium 2 ruby oop inheritance
一个小测试用例:
class A
def self.print
puts "Hello A"
end
end
class B < A
end
A.print
B.print
Run Code Online (Sandbox Code Playgroud)
这输出:
Hello A
Hello A
Run Code Online (Sandbox Code Playgroud)
我想阻止print定义的函数的继承class A.可能吗?
需要输出:
Hello A
`<main>': undefined method `print' for B:Class (NoMethodError)
Run Code Online (Sandbox Code Playgroud)
我发现private_class_method但是因为它失败了,所以我找不到它A.print.
class A
def self.print
puts "Hello A"
end
def self.inherited(klass)
class << klass
undef :print
end
end
end
class B < A
end
A.print
# Hello A
B.print
# private method `print' called for B:Class (NoMethodError)
Run Code Online (Sandbox Code Playgroud)