Array types actually are classes! As stored in memory, they enclose their basic class information (including the class information of their containing element if they aren't an array of natives), the number of elements they hold, and following that the actual array data. length in an array object is a final field rather than a method, because arrays never hold a different number of elements.
For other kinds of structures, like Vector, the number of elements in the object can change from moment to moment, so length() must be a method. Likewise with String: even though the String class is immutable, it inherits the length() method from CharSequence; some kinds of CharSequence can be variable in their length, so it is again implemented as a method.