Question: I am creating a java application. I'm using the salesforce api ([example here](http://www.salesforce.com/us/developer/docs/api/Content/sforce_api_quickstart_steps.htm)) to retrieve sensitive data from Salesforce. All the data is retrieved easily except for data from the encrypted columns. It always comes back as null. I do have permission to view encrypted data.

Is there a restriction on the api that prevents encrypted data from being sent?

Answer: 
Class variables in Ruby are [strange](https://stackoverflow.com/questions/2084490/ruby-class-variables) and [confusing](http://www.oreillynet.com/ruby/blog/2007/01/nubygems_dont_use_class_variab_1.html). 

An idiomatic way to implement what you want is this:

```
class Car
  def wheels
    4
  end
end

class StretchLimo < Car
  def wheels
    6
  end
end

Car.new.wheels #=> 4
StretchLimo.new.wheels #=> 6

```

Whats happening is that class variables are *shared* between all instances of a class. Because `StrechLimo` is a subclass of `Car` instances of `StrechLimo` also see this variable.
`@@` is a class variable so it is shared across all objects instantiated from a given class and all derived class. Because Ruby is interpreted, until you instantiate a `StretchLimo` object, it should not look at any of the `StretchLimo` code, so if you did the following:

```
moe = Car.new
moe.wheel # should give 4
larry = StretchLimo.new
moe.wheel # should give 6

```

Because when the `StretchLimo` gets interpreted it updates the `@@wheels` class variable to be `6`. On the other hand, if you declared "wheels" with only one "`@`" (`@wheels`), it would be an instance variable specific to the object itself, and you would get your preferred behavior.