Do the 3 classes share an interface? That is, do they provide some consistent way to query them? I don't work much with sensors, but it strikes me as odd that a water level sensor and a door sensor would have much in common. In your diagram above, they have 3 different methods they implement (MethodX(), MethodY(), and MethodZ()), but nothing obvious in common.
If each one is able to output, say, a floating point value that represents the voltage coming from the sensor, then it might make more sense to have 3 different classes which each contain a Sensor, but don't inherit from any base class. This is called object composition rather than inheritance.
To answer your other question - it's fine to have a base class that's "empty" in that it has no member variables, and all of its methods are abstract. This would essentially be an interface. Depending on the language you use to implement it, you would either make it an interface (in something like Java or Objective-C), or an abstract base class (in C++).
In my mind what it comes down to is this: will you ever have a need to replace one with any of the others? Given what they do, it doesn't seem likely unless you're the manufacturer of the sensors and writing a test harness to test them before shipping them to customers. In that case, you might want a method like getVoltage() on all of them. But for end users of these classes, you'd probably want something more specific like getWaterLevel(), getDoorPosition(), and getTemperature(). Internally, they could query a Sensor object for its voltage (or whatever would be appropriate). But the interfaces probably wouldn't need to be very similar since they'd be used in such different scenarios.