The reason of what design decision? Ruby doesn't have Java's "public" (anyone may access) and "private" (same-class only), it has one additional level with better names: public - anyone may access protected - same class only, please private - only from the instance itself "Mom, my brother is messing with my hair! Protect me!" "Your hair *is* protected, that's the problem. Make it private and then he won't be able to touch it."