Рубрики

Часто задаваемые вопросы по программированию на Java | Набор 2

Часто Задаваемые Вопросы Интервью Java | Комплект 1
Вопросы для интервью для профессионалов Java

Можем ли мы перегрузить или переопределить статические методы в Java ?

  • Переопределение: Переопределение связано с полиморфизмом во время выполнения. Подкласс (или производный класс) обеспечивает конкретную реализацию метода в суперклассе (или базовом классе) во время выполнения.
  • Перегрузка: Перегрузка связана с полиморфизмом времени компиляции (или статическим). Эта функция позволяет различным методам иметь одинаковые имена, но разные подписи, особенно количество входных параметров и тип входных параметров.
  • Можем ли мы перегрузить статические методы? Ответ «Да» . У нас может быть два или более статических метода с одинаковым именем, но с различиями во входных параметрах
  • Можем ли мы переопределить статические методы в Java? Мы можем объявить статические методы с той же сигнатурой в подклассе, но это не считается переопределением, так как не будет никакого полиморфизма во время выполнения. Следовательно, ответ «Нет» . Статические методы не могут быть переопределены, потому что переопределение методов происходит только в контексте динамического поиска (т. Е. Времени выполнения) методов. Статические методы (по их названию) ищутся статически (т.е. во время компиляции).

Читать дальше

Почему основной метод является статическим в Java?
Метод является статическим, потому что в противном случае возникла бы неоднозначность: какой конструктор должен быть вызван? Особенно, если ваш класс выглядит так:

public class JavaClass
{
  protected JavaClass(int x)
  {   }
   public void main(String[] args) 
   {

    }
}

Должна ли JVM вызывать новый JavaClass (int)? Что это должно пройти за х? Если нет, должна ли JVM создавать экземпляр JavaClass без запуска какого-либо метода конструктора? потому что это будет в особом случае весь ваш класс — иногда у вас есть экземпляр, который не был инициализирован, и вы должны проверять его в каждом методе, который может быть вызван. Существует слишком много крайних случаев и неоднозначностей, чтобы JVM имела смысл создавать экземпляр класса перед вызовом точки входа. Вот почему главное статично.

Что произойдет, если вы удалите статический модификатор из основного метода?
Программа успешно компилируется. Но во время выполнения выдает ошибку «NoSuchMethodError».

Какова область применения переменных в Java в следующих случаях?

  • Переменные-члены (область уровня класса): переменные-члены должны быть объявлены внутри класса (вне любой функции). К ним можно получить прямой доступ в любом месте в классе
  • Локальные переменные (область действия уровня метода). Переменные, объявленные внутри метода, имеют область действия уровня метода и недоступны вне метода.
  • Переменные цикла (блок-область): переменная, объявленная внутри пары скобок «{» и «}» в методе, имеет область видимости только в скобках.

Читать дальше

Что такое ключевое слово «это» в Java ?
В экземпляре метода или конструктора это ссылка на текущий объект — объект, чей метод или конструктор вызывается. С помощью этого вы можете ссылаться на любой член текущего объекта из метода экземпляра или конструктора.
Использование этого ключевого слова

  • Используется для ссылки на переменную экземпляра текущего класса.
  • Для вызова текущего конструктора класса.
  • Он может быть передан в качестве аргумента в вызове метода.
  • Он может быть передан в качестве аргумента в вызове конструктора.
  • Используется для возврата текущего экземпляра класса.
  • Используется для вызова метода текущего класса (неявно)

Что такое абстрактный класс ? Насколько абстрактные классы похожи или отличаются в Java от C ++?
Абстрактные классы — это классы, которые содержат один или несколько абстрактных методов. Абстрактный метод — это метод, который объявлен, но не содержит реализации. Абстрактные классы не могут быть созданы, и требуют, чтобы подклассы обеспечивали реализации для абстрактных методов.

  • Как и в C ++, в Java не может быть создан экземпляр абстрактного класса, однако мы можем иметь ссылки на тип абстрактного класса.
  • Как и C ++, абстрактный класс может содержать конструкторы в Java. И конструктор абстрактного класса вызывается при создании экземпляра унаследованного класса
  • В Java у нас может быть абстрактный класс без какого-либо абстрактного метода. Это позволяет нам создавать классы, которые не могут быть созданы, но могут быть унаследованы.
  • Абстрактные классы также могут иметь конечные методы (методы, которые нельзя переопределить). Например, следующая программа компилируется и работает нормально.

Читать дальше

Какой класс является суперклассом для каждого класса?
Класс объекта

Можем ли мы перегрузить метод main ()?
Основным методом в Java не является внеземной метод. Помимо того, что main (), как и любой другой метод, может быть перегружен аналогичным образом, JVM всегда ищет сигнатуру метода для запуска программы.

  • Обычный метод main действует как точка входа для JVM, чтобы начать выполнение программы.
  • Мы можем перегрузить основной метод в Java. Но программа не выполняет перегруженный метод main, когда мы запускаем вашу программу, нам нужно вызывать перегруженный метод main только из фактического метода main.

Читать дальше

Что такое клонирование объектов ?
Клонирование объекта означает создание точной копии исходного объекта. Если класс должен поддерживать клонирование, он должен реализовать интерфейс java.lang.Cloneable и переопределить метод clone () из класса Object. Синтаксис метода clone ():

protected Object clone() throws CloneNotSupportedException

Если класс объекта не реализует интерфейс Cloneable, он генерирует исключение CloneNotSupportedException.

Читать дальше

Чем наследование в C ++ отличается от Java?

  1. В Java все классы наследуются от класса Object прямо или косвенно. Следовательно, в Java всегда есть одно дерево наследования классов, а класс Object является корнем этого дерева.
  2. В Java члены класса grandparent не доступны напрямую. Смотрите этот G-Fact для более подробной информации.
  3. Значение спецификатора доступа к защищенному члену несколько отличается в Java. В Java защищенные члены класса «A» доступны в другом классе «B» того же пакета, даже если B не наследуется от A (они оба должны быть в одном пакете).
  4. Java использует ключевое слово extends для наследования. В отличие от C ++, Java не предоставляет спецификатора наследования, такого как public, protected или private. Поэтому мы не можем изменить уровень защиты членов базового класса в Java, если какой-либо элемент данных является общедоступным или защищенным в базовом классе, тогда он остается открытым или защищенным в производном классе. Как и C ++, закрытые члены базового класса недоступны в производном классе.
    В отличие от C ++, в Java нам не нужно помнить те правила наследования, которые являются комбинацией спецификатора доступа базового класса и спецификатора наследования.
  5. В Java методы являются виртуальными по умолчанию. В C ++ мы явно используем виртуальное ключевое слово. Смотрите этот G-Fact для более подробной информации.
  6. Java использует отдельный интерфейс ключевых слов для интерфейсов и абстрактное ключевое слово для абстрактных классов и абстрактных функций.
  7. В отличие от C ++, Java не поддерживает множественное наследование. Класс не может наследоваться от более чем одного класса. Класс может реализовать несколько интерфейсов, хотя.
  8. В C ++ конструктор по умолчанию родительского класса вызывается автоматически, но если мы хотим вызвать параметризованный конструктор родительского класса, мы должны использовать список Initializer . Как и C ++, конструктор по умолчанию родительского класса автоматически вызывается в Java, но если мы хотим вызвать параметризованный конструктор, то мы должны использовать super для вызова родительского конструктора.

Смотрите примеры здесь


Почему перегрузка метода невозможна при изменении типа возвращаемого значения в Java?

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


Можем ли мы переопределить частные методы в Java?

Нет, закрытый метод не может быть переопределен, так как он не виден ни в каком другом классе. Читать дальше

Что такое пустая конечная переменная ?
Конечной переменной в Java можно присвоить значение только один раз, мы можем присвоить значение либо в объявлении, либо позже.

    final int i = 10;
    i = 30; // Error because i is final.

Пустая конечная переменная в Java — это конечная переменная, которая не инициализируется во время объявления. Ниже приведен простой пример пустого финала.

    // A simple blank final example 
    final int i;
    i = 30;

Читать дальше

Что такое «супер» ключевое слово в Java ?
Ключевое слово super в java — это ссылочная переменная, которая используется для ссылки на объекты родительского класса. Ключевое слово «супер» вошло в картину с понятием наследования. Всякий раз, когда вы создаете экземпляр подкласса, экземпляр родительского класса создается неявно, то есть ссылается на переменную супер-ссылки.
Различные сценарии использования Java Super Keyword:

  • super используется для ссылки на непосредственную родительскую переменную экземпляра
  • super используется для вызова метода родительского класса
  • super () используется для вызова непосредственного родительского конструктора

Читать дальше

Что такое статическая переменная в Java ?
Ключевое слово static в Java используется в основном для управления памятью. Мы можем применить статическое ключевое слово java с переменными, методами, блоками и вложенным классом. Ключевое слово static относится к классу, а не к экземпляру класса.

Статика может быть:

  • переменная (также известная как переменная класса)
  • метод (также известный как метод класса)
  • блок
  • вложенный класс

Различия между HashMap и HashTable в Java .
1. HashMap не синхронизирован. Он не является потокобезопасным и не может быть разделен между многими потоками без надлежащего кода синхронизации, тогда как Hashtable синхронизируется. Это потокобезопасный и может использоваться многими потоками.
2. HashMap допускает один нулевой ключ и несколько нулевых значений, тогда как Hashtable не допускает нулевой ключ или значение.
3. HashMap обычно предпочтительнее HashTable, если синхронизация потоков не требуется
Подробнее

Как объекты Java хранятся в памяти ?
В Java все объекты динамически размещаются в Heap . Это отличается от C ++, где объектам может быть выделена память либо в стеке, либо в куче. В C ++, когда мы выделяем abject с помощью new (), объект размещается в Heap, в противном случае в стеке, если не глобальный или статический.
В Java, когда мы объявляем только переменную типа класса, создается только ссылка (память не выделяется для объекта). Чтобы выделить память для объекта, мы должны использовать new (). Так что объекту всегда выделяется память на куче. Читать дальше

Какие функции C ++ отсутствуют в Java?
Попробуйте ответить на этот вопрос самостоятельно, прежде чем увидеть ответ — здесь .

Смотрите также

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Часто задаваемые вопросы по программированию на Java | Набор 2

0.00 (0%) 0 votes