Учебники

33) Абстрактный метод и класс

Что такое абстрактный класс?

Абстрактные классы — это классы в Java, которые объявляют один или несколько абстрактных методов.

Рассмотрим следующую иерархию классов, состоящую из класса Shape, который наследуется тремя классами Rectangle, Circle и Triangle. Класс Shape создан для сохранения общих атрибутов и методов, общих для трех классов Rectangle, Circle и Triangle. CalculateArea () — один из таких методов, который используется всеми тремя дочерними классами и присутствует в классе Shape.
 

Java абстрактный класс и методы

В этом уроке вы узнаете

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

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

Java абстрактный класс и методы

Объект класса треугольник даст треугольник, снова обычную повседневную форму.

Java абстрактный класс и методы

Но как будет выглядеть объект Class Shape в практическом мире?

Java абстрактный класс и методы

Если вы наблюдаете, что класс 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 является окончательной