Что такое абстрактный класс?
Абстрактные классы — это классы в Java, которые объявляют один или несколько абстрактных методов.
Рассмотрим следующую иерархию классов, состоящую из класса Shape, который наследуется тремя классами Rectangle, Circle и Triangle. Класс Shape создан для сохранения общих атрибутов и методов, общих для трех классов Rectangle, Circle и Triangle. CalculateArea () — один из таких методов, который используется всеми тремя дочерними классами и присутствует в классе Shape.
В этом уроке вы узнаете
- Что такое абстрактный класс?
- Что такое абстрактные методы?
- Абстрактный класс в Java и метод. Важные моменты
- Последнее ключевое слово в Java
Теперь предположим, что вы пишете код для создания объектов для классов, изображенных выше. Давайте посмотрим, как эти объекты будут выглядеть в практическом мире.
Объект прямоугольника класса даст прямоугольник, форму, которую мы так часто наблюдаем в повседневной жизни.
Объект класса треугольник даст треугольник, снова обычную повседневную форму.
Но как будет выглядеть объект Class Shape в практическом мире?
Если вы наблюдаете, что класс Shape служит нашей цели достижения наследования и полиморфизма. Но он не был создан для реализации. Такие классы могут быть помечены как Абстрактные . Абстрактный класс не может быть создан.
Синтаксис:
abstract class Shape{ // code }
Возможно, вы НЕ помечаете класс Shape как абстрактный, а затем создаете его экземпляр. Но такой объект не будет использоваться в вашем коде и откроет место для потенциальных ошибок. Следовательно, это не желательно.
Что такое абстрактные методы?
Абстрактный метод — это метод, который имеет только определение метода, но не содержит реализацию.
Как мы все знаем, формула для вычисления площади для прямоугольника, круга и треугольника отличается. Метод convertArea () должен быть переопределен наследующими классами. Нет смысла определять его в классе Shape, но мы должны убедиться, что все наследующие классы имеют метод.
Такие методы могут быть помечены как абстрактные.
Синтаксис:
abstract public void calculateArea();
Для абстрактного метода реализация не требуется. Определяется только сигнатура метода.
Абстрактный класс в Java: важные моменты
- Абстрактный класс также может иметь конкретные (полные) методы.
- В целях разработки класс может быть объявлен абстрактным, даже если он не содержит абстрактных методов.
- Ссылка на абстрактный класс может указывать на объекты его подклассов, тем самым достигая полиморфизма во время выполнения. Ex: Shape obj = new Rectangle ();
- Класс должен быть обязательно помечен как абстрактный, если он имеет один или несколько абстрактных методов.
Последнее ключевое слово в Java
Последний модификатор применяется к классам, методам и переменным. Значение финала варьируется от контекста к контексту, но основная идея та же.
- Финальный класс не может быть унаследован
- Конечная переменная становится константой, и ее значение не может быть изменено.
- Последний метод не может быть переопределен. Это сделано из соображений безопасности, и эти методы используются для оптимизации.
Пример : — Изучение абстрактных и окончательных ключевых слов.
Шаг 1) Скопируйте следующий код в редактор.
abstract class Shape{ final int b = 20; public void display(){ System.out.println("This is display method"); } abstract public void calculateArea(); } public class Rectangle extends Shape{ public static void main(String args[]){ Rectangle obj = new Rectangle(); obj.display(); //obj.b=200; } //public void calculateArea(){} }
Шаг 2) Сохраните, скомпилируйте и запустите код.
Шаг 3) Ошибка =? Абстрактный метод не реализован в классе Rectangle. Для устранения проблемы раскомментируйте строку № 15.
Шаг 4) Раскомментируйте строку № 13. Сохраните и скомпилируйте код.
Шаг 5) Ошибка =? переменная b является окончательной