Я столкнулся с этим вопросом в интервью. Я вернулся и прочитал об этом здесь, на SO, и наткнулся на это, это и это и многие другие дубликаты говорят почти одно и то же.
Я понимаю, что общие определения предшествуют их реализации в языках программирования. Я также знаю, что языки программирования (я говорю о Java) стараются максимально разделить два определения. Например: Java рассматривает class как инкапсуляцию, поскольку предоставляет оболочку для хранения всех ваших подобных данных; а interface — это своего рода абстракция.
Но что я действительно хочу знать, так это то, как эти два определения пересекаются? Are the two subsets, overlapping, or completely disjoint sets. Я понимаю, что определения меняются по отношению к общим определениям и определениям для конкретного языка, поэтому, если можете, ответьте на оба или хотя бы упомяните то, о котором вы говорите.