Что такое абстрактный класс?
Абстрактные классы — это классы в 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 является окончательной



