You would use a solid line with an "empty" arrowhead for a subclass.
You would use a dashed line with an "empty" arrowhead when you are implementing an interface.
The other time you would use a dashed line is if one class is dependent on the other (changes to the second class require changes to the first). In that case, you want to use a dashed line with a primitive arrow (just the V shape, not a triangle). Only include a dependency line if there is not already an associative line between the two classes.