Что такое абстрактные классы и абстрактные методы?

Возможный дубликат:
Абстрактный класс в Java

У меня появилось несколько объяснений, но до сих пор я не могу понять, что представляют собой абстрактные классы и методы в Java.

Некоторые сказали, что он должен что-то сделать с безопасностью программы, другие сказали, что это не что-то в этом роде.

Даже из книг Дителя и Дителя я не понимаю. Когда, где и почему мы его используем?

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

Ответ 1

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

Абстрактные методы - это методы в абстрактном классе (должны быть объявлены абстрактными), что означает, что расширяющийся конкретный класс должен переопределять их, поскольку они не имеют тела.

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

Подробнее об этом можно прочитать здесь: Абстрактные методы и классы

Ответ 2

- Abstract class - это тот, который не может быть создан, т.е. его object не может быть создан.

- Abstract method являются объявлением метода без его определения.

- A Non-abstract class может иметь только не абстрактные методы.

- Abstract class может иметь как абстрактные, так и абстрактные методы.

- Если Class имеет Abstract method , тогда класс также должен быть абстрактным.

- Abstract method должен быть реализован самым первым не-абстрактным подклассом.

- Abstract class в Design patterns используются для инкапсулировать поведение, которое продолжает меняться.

Ответ 3

Абстрактным методом является объявление подписи метода без тела. Например:

public abstract class Shape {
    . . .

    public abstract double getArea();
    public abstract double getPerimeter();
}

Методы getArea() и getPerimeter() являются абстрактными. Поскольку класс Shape имеет абстрактный метод, он должен быть объявлен как abstract. Класс также может быть объявлен abstract без абстрактных методов. Когда класс является абстрактным, его экземпляр не может быть создан; можно создавать экземпляры (конкретных) подклассов. Конкретный класс - это класс, который не объявляется абстрактным (и поэтому не имеет абстрактных методов и реализует все наследуемые абстрактные методы). Например:

public class Circle extends Shape {
    public double radius;
    . . .

    public double getArea() {
        return Math.PI * radius * radius;
    }

    public double getPerimeter() {
        return 2.0 * Math.PI * radius;
    }
}

Есть много причин для этого. Можно было бы написать метод, который будет одинаковым для всех фигур, но это зависит от поведения, специфичного для конкретной формы, которое неизвестно на уровне Shape. Например, можно написать метод:

public abstract class Shape {
    . . .

    public void printArea(PrintStream out) {
        out.println("The area is " + getArea());
    }
}

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

Другая причина наличия абстрактного класса заключается в том, что вы можете частично реализовать интерфейс. Все методы, объявленные в интерфейсе, наследуются как абстрактные методы любым классом, реализующим интерфейс. Иногда вы хотите обеспечить частичную реализацию интерфейса в классе и оставить детали в подклассах; частичная реализация должна быть объявлена ​​абстрактной.

Ответ 4

абстрактный метод не имеют body.A хорошо определенный метод не может быть объявлен абстрактным.

A класс, который имеет абстрактный метод должен быть объявлен как абстрактный.

Абстрактный класс не может быть создан.

Ответ 5

Абстрактный класс - это класс, из которого вы не можете создать объект, поэтому он в основном используется для наследования. (Я не уверен, что вы можете иметь в нем статические методы)

Абстрактный метод - это метод, который должен переопределить дочерний класс, он не имеет тела, отмечен абстрактом, и только абстрактные классы могут иметь эти методы.

Ответ 6

С абстрактными классами вы можете иметь какой-то скелет для расширения других классов.

Вы не можете создать экземпляр, но вы можете применить некоторую общую реализацию, которую вы можете использовать в расширяющих их классах.

Ответ 7

Как только вы получите то, что абстрактное означает в Java, вы спросите: зачем они это вставляли? Java может работать без абстрактных материалов, НО она входит в определенный стиль или словарь OO. Существуют действительно ситуации, когда абстрактный класс или метод - элегантный способ выразить намерение авторов программы. Большинство, когда вы программируете фреймворк или библиотеку, которые будут использоваться другими.

Ответ 8

АБСТРАКТНЫЕ КЛАССЫ И АБСТАРТНЫЕ МЕТОДЫ ПОЛНОЕ ОПИСАНИЕ ИСПОЛЬЗУЙТЕ ЧЕРЕЗ ЭТО

абстрактный метод не имеет body.A хорошо определенный метод не может быть объявлен абстрактный.

Класс, который имеет абстрактный метод, должен быть объявлен как абстрактный.

Абстрактный класс не может быть создан.