Public_methods on a class

Hi

is anyone able to to explain to me why :foo is in the array below?

My understanding of the docs would suggest that calling
public_methods(false) should only include methods defined on the class
itself?

class A
def self.foo
“FOO”
end
end
class B < A
end
p B.public_methods(false)

=> [:foo, :allocate, :new, :superclass]

(Eval - Eval The Future)

Thanks

Steve

In the defination of class B, the part < A" tells ruby that class B
is inheriting from class A.

When class B inherits from class A, all the properties(methods,
instance and class variables) in class A are available to class B

Ex:

class A
def self.foo
“FOO”
end
end
class B < A

end

class C < B

end

C.public_methods(false)

[:foo, :allocate, :new, :superclass]

When we inherit class B in C will result the same…

Thanks,
Ganesh Kaliannan

The part I don’t understand is behaviour of public_methods.

From the docs:

"
If the all parameter is set to false, only those methods in the receiver
will be listed.
"

So, from my understanding, in my example, the Inheritance chain for A
is:

“A < Object”

And B therefore is:

“B < A < Object”

What I don’t understand is why A.public_methods(false) excludes the
public_methods defined on Object, but B.public_methods(false) INCLUDES
the public methods defined on A.

Thanks

It seems that A.public_methods(false) does include all the public
methods.