Ну, в некотором смысле это чисто теоретическая вещь, хотя и не маловажная.
Мы используем абстракции, чтобы упростить понимание.Я могу оперировать строковым классом на каком-то языке, чтобы скрыть тот факт, что я имею дело с упорядоченным набором символов, которые являются отдельными элементами.Я имею дело с упорядоченным набором символов, чтобы скрыть тот факт, что я имею дело с числами.Я имею дело с числами, чтобы скрыть тот факт, что я имею дело с 1 и 0.
Утечка абстракции - это та, которая не скрывает детали, которые она должна скрывать.Если вызвать string.Length для 5-символьной строки в Java или .NET, я мог получить любой ответ от 5 до 10, из-за деталей реализации, где то, что эти языки называют символами, на самом деле являются точками данных UTF-16, которые могут представлять 1 или.5 персонажа.Абстракция просочилась.Однако отсутствие утечки означает, что для определения длины потребуется либо больше места для хранения (для хранения реальной длины), либо для перехода от O (1) к O (n) (чтобы определить реальную длину).Если я забочусь о реальном ответе (часто это не так), вам нужно работать над знанием того, что на самом деле происходит.
Более спорные случаи случаются в случаях, когда метод или свойство позволяет вам получитьво внутренней работе, будь то утечка абстракции или четко определенные способы перехода на более низкий уровень абстракции, иногда люди могут не соглашаться.