Я хочу знать, что все примитивные типы данных в C, C ++ и Java являются абстрактными типами данных, потому что их реализации скрыты.
И еще кое-что:
Я хочу спросить, есть ли в ADT две части абстрактного представления (все функции, которые могут работать с ним) и представления реализации (как реализованы функции и тип данных). Тогда как я могу создать ADT в C ++ ??
Как и в Java, абстрактное представление может быть реализовано с использованием интерфейса, а представление реализации — с использованием класса.
Подумайте об абстракте против бетон (Термин «конкретный» здесь мой для наглядности.
Абстрактный класс не может быть создан, конкретный класс может быть создан. когда вы унаследовали от абстрактного класса и определили все абстрактные методы, теперь он конкретный.
так как вы можете создать экземпляр int
это не абстрактно, а скорее конкретно
Дело не в том, что реализация скрыта, что делает ее абстрактной, а в том, что она еще не определена.
Если у вас есть абстрактный базовый класс, то некоторые функции должны быть определены его потомками. Видимость не имеет значения. Вы не можете наследовать от int
это тип POD (простые старые данные)
В C ++ std::string
имеет видимую реализацию, в Java, часть его скрыта (поэтому + может использоваться для объединения строк в Java)