In typical object-oriented programming languages like Java, classes are used as types. On the other hand, type-theoretic approaches to object-oriented languages treat interfaces as types.
Are there any theoretical frameworks that formalize the use of classes as types?