Подтвердить что ты не робот

Зачем использовать абстрактный класс без абстрактных методов?

Теперь я изучаю java, и я нахожусь в части Abstract. Я прочитал для меня странную часть, что есть абстрактный класс который не включает какой-либо метод abstarct.

Почему они используют этот класс?

4b9b3361

Ответ 1

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

Например, нет смысла создавать экземпляр AbstractVehicle. Но все автомобили могут повторно использовать общий метод registerMileage(int).

Ответ 2

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

HttpServlet является примером этого шаблона в действии. Он имеет стандартные реализации для всех методов, которые обрабатывают разные типы запросов, но все они генерируют исключение. Подкласс должен переопределить их, если они хотят сделать что-то значимое. Это нормально, чтобы оставить некоторые методы обработчика не переопределенными, если они никогда не вызываются.

Ответ 3

Да, мы можем иметь абстрактный класс без абстрактного метода. Лучший пример абстрактного класса без абстрактного метода - HttpServlet

Ответ 4

Если этот класс расширяет еще один абстрактный класс и не имеет реализации унаследованных абстрактных методов.

Ответ 5

Этот класс содержит некоторую общую логику для всех своих наследников, но сам по себе не представляет собой полезную сущность (в терминах конкретного приложения)

Ответ 6

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

Ответ 7

Этот тип классов используется для реализации общей логики, которая может быть реализована другими классами. Создание абстрактного объекта предотвращает его создание. Но другие классы могут наследовать класс и его методы.

Ответ 8

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

Ответ 9

Я не могу придумать никаких оснований для его использования. Его можно использовать как "маркер", но интерфейс будет лучшим выбором.

Ответ 10

Абстрактный класс без абстрактного метода означает, что вы можете создать объект этого абстрактного класса. См. Мой пример.

abstract class Example{
void display(){
 System.out.println("Hi I am Abstract Class.");
}
}
class ExampleDemo 
{
public static void main(String[] args) 
{
Example ob = new Example(){};
ob.display();
}
}

Если вы напишете один абстрактный метод внутри абстрактного класса, он не будет компилироваться. Это означает, что если вы создадите абстрактный класс без абстрактного метода, вы можете создать Object этого абстрактного класса.