Java программирование
 
 
Навигация

Полезно

Главная > Чем Java отличается от C

Чем Java отличается от C

Свойства, присутствующие в С и С++, и удаленные из Java

Конструкция typedef, препроцессор

Конструкция typedef была унаследована С++ из С. Из Java она выброшена совсем.

JAVA программированиеНеобходимость в макропроцессоре также во многом отпала при написании программ на С++. Почти все, для чего использовались макрорасширения, можно было сделать более элегантным и надежным образом, используя конструкции самого языка.
Система неявно поощряла создание каждым программистом своего собственного подмножества языка, неизвестного остальному миру. По мере разрастания кодов увеличивается тот смысловой контекст, в котором компилятор интерпретирует каждую строку программы. Уже в проектах среднего размера существенно возрастает нагрузка на компилятор, не говоря уже о нагрузке на память программиста.
Единственная оставшаяся важная функция препроцессора -- позволить включение в программу файлы-заголовки с описаниями классом. Эта операция может быть выполнена более просто и эффективно, если позволить компилятору читать подготовленные бинарные файлы с описанием классов. Последний путь был выбран при создании языка Java.

Все эти соображения позволили полностью исключить необходимость использования текстового препроцессора в языке Java.

Struct и union

Структуры не имеют смысла в Java, их роль полностью выполняют классы. Использование конструкций типа union для типизованных объектов также больше не нужно -- язык позволяет определить тип объекта при исполнении программы.

Функции

В этом смысле Java чисто объектно-ориентированная система. Функции и процедуры, не привязанные к контексту какого-либо объекта, больше не присутствуют в системе. В ситуации, когда функция логически не привязана к определенному экземпляру класса, она может быть создана как метод самого класса (т.е. иметь тип static).

Множественное наследование

Последовательная реализация концепции множественного наследования в С++ привела к существенным сложностям как в создании компиляторов, так и в использовании его (множественного наследования) в программах. В качестве альтернативы Java использует понятие интерфейса определяющего набор методов, которые должны быть определены в классе, реализующем этот интерфейс. Интерфейс может также содержать определение некоторых констант.

То, чего интерфейс содержать не может -- это реализации методов или изменяемые поля данных. Классы, которые объявлены, как реализующие тот или иной интерфейс, обязаны реализовать все методы, объявленные в интерфейсе.

Перегрузка операторов

Опыт использования перегруженных операторов в С++ показывает, что они имеют смысл в довольно ограниченном наборе ситуаций. С другой стороны, злоупотребление этим свойством может сделать программу абсолютно непонятной. Единственное "встроенное" в язык Java исключение -- возможность использования оператора "+" для склеивания строк.

Автоматическое преобразование типов

В языке Java запрещено автоматическое преобразование типов, широко используемое (и рекомендуемое) в С++. Чтобы преобразовать элемент одного типа в другой, необходимо указать это явно, например

int myInt;

double myFloat = 3.14159;

myInt = myFloat;  // допустимо в С++, недопустимо в Java

myInt = (int)myFloat;  // допустимо в Java

Исключение составляет преобразование между встроенными численными типами без потери информации.

Указатели

Большинство исследований показали, что применение указателей в С/С++ являются одним из основных источников ошибок. В силу того, что в языке больше не стало структур, а массивы и строки превратились в полноценные объекты, надобность в указателях отпала. Содержимое строк и массивов доступно только по индексам, причем контроль доступа во время выполнения не позволяет выходить за границы массива или строки.

Итоги

Итак, мы показали два из основных свойства языка программирования Java

  • знакомый -- Java сохраняет стиль программирования C и С++
  • простой -- количество конструкций языка в Java существенно сокращено по сравнению с С и С++

 
Все права защищены © 2007, JAVA.
Мини видеокамеры canon g9: фотоаппарат цифровой. / Веб студия Создание сайта раскрутка интернет сайта.