Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> java

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

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

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

Абстрактный класс Java

Абстрактный класс в Java не может быть создан (мы не можем создавать объекты абстрактных классов). Мы используем abstract ключевое слово для объявления абстрактного класса. Например,

// create an abstract class
abstract class Language {
  // fields and methods
}
...

// try to create an object Language
// throws an error
Language obj = new Language(); 

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

abstract class Language {

  // abstract method
  abstract void method1();

  // regular method
  void method2() {
    System.out.println("This is regular method");
  }
}

Чтобы узнать о неабстрактных методах, посетите методы Java. Здесь мы узнаем об абстрактных методах.

<час>

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

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

abstract void display();

Здесь display() является абстрактным методом. Тело display() заменяется на ; .

Если класс содержит абстрактный метод, то класс должен быть объявлен абстрактным. В противном случае будет выдана ошибка. Например,

// error
// class should be abstract
class Language {

  // abstract method
  abstract void method1();
}
<час>

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

Хотя абстрактные классы не могут быть созданы, мы можем создавать из них подклассы. Затем мы можем получить доступ к членам абстрактного класса, используя объект подкласса. Например,

abstract class Language {

  // method of abstract class
  public void display() {
    System.out.println("This is Java Programming");
  }
}

class Main extends Language {

  public static void main(String[] args) {
    
    // create an object of Main
    Main obj = new Main();

    // access method of abstract class
    // using object of Main class
    obj.display();
  }
}

Вывод

This is Java programming

В приведенном выше примере мы создали абстрактный класс с именем Language. . Класс содержит обычный метод display() .

Мы создали класс Main, который наследует абстрактный класс. Обратите внимание на заявление,

obj.display();

Здесь obj является объектом дочернего класса Main . Мы вызываем метод абстрактного класса, используя объект obj .

<час>

Реализация абстрактных методов

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

abstract class Animal {
  abstract void makeSound();

  public void eat() {
    System.out.println("I can eat.");
  }
}

class Dog extends Animal {

  // provide implementation of abstract method
  public void makeSound() {
    System.out.println("Bark bark");
  }
}

class Main {
  public static void main(String[] args) {

    // create an object of Dog class
    Dog d1 = new Dog();

    d1.makeSound();
    d1.eat();
  }
}

Вывод

Bark bark
I can eat.

В приведенном выше примере мы создали абстрактный класс Animal. . Класс содержит абстрактный метод makeSound() и неабстрактный метод eat() .

Мы унаследовали подкласс Dog из суперкласса Animal . Здесь подкласс Dog обеспечивает реализацию абстрактного метода makeSound() .

Затем мы использовали объект d1 Собаки класс для вызова методов makeSound() и eat() .

Примечание :Если Собака класс не обеспечивает реализацию абстрактного метода makeSound() , Собака также должен быть объявлен как абстрактный. Это связано с тем, что подкласс Dog наследует makeSound() из Животное .

<час>

Доступ к конструктору абстрактных классов

Абстрактный класс может иметь конструкторы, подобные обычному классу. И мы можем получить доступ к конструктору абстрактного класса из подкласса, используя super ключевое слово. Например,

abstract class Animal {
   Animal() {
      ….
   }
}

class Dog extends Animal {
   Dog() {
      super();
      ...
   }
}

Здесь мы использовали super() внутри конструктора Dog для доступа к конструктору Animal .

Обратите внимание, что super всегда должен быть первым оператором конструктора подкласса. Посетите суперключевое слово Java, чтобы узнать больше.

<час>

Абстракция Java

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

Абстракция — важная концепция объектно-ориентированного программирования, позволяющая скрыть ненужные детали и показать только необходимую информацию.

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

Практическим примером абстракции могут быть тормоза мотоцикла. Мы знаем, что делает тормоз. Когда мы нажимаем на тормоз, мотоцикл останавливается. Однако работа тормоза скрыта от нас.

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

Давайте рассмотрим пример, который поможет нам лучше понять абстракцию Java.

Пример 3. Абстракция Java

abstract class MotorBike {
  abstract void brake();
}

class SportsBike extends MotorBike {
    
  // implementation of abstract method
  public void brake() {
    System.out.println("SportsBike Brake");
  }
}

class MountainBike extends MotorBike {
    
  // implementation of abstract method
  public void brake() {
    System.out.println("MountainBike Brake");
  }
}

class Main {
  public static void main(String[] args) {
    MountainBike m1 = new MountainBike();
    m1.brake();
    SportsBike s1 = new SportsBike();
    s1.brake();
  }
}

Вывод :

MountainBike Brake
SportsBike Brake

В приведенном выше примере мы создали абстрактный суперкласс MotorBike. . Суперкласс MotorBike имеет абстрактный метод brake() .

brake() метод не может быть реализован внутри MotorBike . Это потому, что каждый велосипед имеет различную реализацию тормозов. Итак, все подклассы MotorBike будет иметь другую реализацию brake() .

Итак, реализация brake() в Мотоцикл скрыто.

Вот, Горный велосипед делает собственную реализацию brake() и Спортбайк делает собственную реализацию brake() .

Примечание :мы также можем использовать интерфейсы для достижения абстракции в Java. Чтобы узнать больше, посетите интерфейс Java.

<час>

Ключевые моменты, которые следует помнить


java

  1. Абстрактный класс и метод С#
  2. Переменные и литералы Java
  3. Java-класс и объекты
  4. Окончательное ключевое слово Java
  5. Оператор экземпляра Java
  6. Вложенный и внутренний класс Java
  7. Вложенный статический класс Java
  8. Анонимный класс Java
  9. Одноэлементный класс Java
  10. Класс Java ObjectOutputStream