Јава апстрактна класа и метод (са примером)

У овом упутству ћемо научити о апстрактним класама и методама Јава уз помоћ примера. Такође ћемо научити о апстракцији на Јави.

Јава апстрактни час

Апстрактна класа у Јави не може се инстанцирати (не можемо креирати објекте апстрактних класа). Користимо 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"); ) )

Да бисте сазнали више о апстрактним методама, посетите Јава методе. Овде ћемо научити апстрактне методе.

Јава Апстрактна метода

Метода која нема своје тело позната је као апстрактна метода. Исту abstractкључну реч користимо за стварање апстрактних метода. На пример,

 abstract void display();

Овде display()је апстрактна метода. Тело од display()је замењено са ;.

Ако класа садржи апстрактну методу, тада класу треба прогласити апстрактном. У супротном, генерисаће грешку. На пример,

 // error // class should be abstract class Language ( // abstract method abstract void method1(); )

Пример: Јава апстрактна класа и метод

Иако апстрактне класе не могу бити инстанциране, од њих можемо створити поткласе. Тада можемо приступити члановима апстрактне класе користећи објекат поткласе. На пример,

 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(); ) )

Оутпут

 Ово је Јава програмирање

У горњем примеру створили смо апстрактну класу под називом Језик. Час садржи редовни метод display().

Направили смо главну класу која наслеђује апстрактну класу. Обратите пажњу на изјаву,

 obj.display();

Овде је обј објекат подређене класе Маин. Позивамо методу апстрактне класе помоћу објекта обј.

Примена апстрактних метода

Ако апстрактна класа укључује било који апстрактни метод, тада све подређене класе наслеђене од апстрактне суперкласе морају да обезбеде примену апстрактне методе. На пример,

 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(); ) )

Оутпут

 Кора коре коју могу да једем.

У горњем примеру смо креирали апстрактну класу Анимал. Предмет садржи апстрактну методу makeSound()и неапстрактну методу eat().

Наследили смо поткласу Пас од суперкласе Анимал. Овде поткласа Дог пружа примену апстрактне методе makeSound().

Затим смо користили објекат д1 класе Дог за позивање метода makeSound()и eat().

Напомена : Ако класа Дог не пружа примену апстрактне методе makeSound(), Дог такође треба прогласити апстрактном. То је зато што поткласа Пас наслеђује makeSound()од Анимал.

Приступа конструктору апстрактних часова

Апстрактна класа може имати конструкторе попут редовне класе. Конструктору апстрактне класе можемо приступити из подкласе користећи superкључну реч. На пример,

 abstract class Animal ( Animal() (… . ) ) class Dog extends Animal ( Dog() ( super();… ) )

Овде смо користили super()унутрашњи конструктор пса за приступ конструктору животиње.

Имајте на уму да superувек треба да буде прва изјава конструктора подкласе. Посетите Јава супер кључну реч да бисте сазнали више.

Јава апстракција

Главна употреба апстрактних класа и метода је постизање апстракције у Јави.

Апстракција је важан концепт објектно оријентисаног програмирања који нам омогућава да сакријемо непотребне детаље и прикажемо само потребне информације.

То нам омогућава управљање сложеношћу изостављањем или скривањем детаља помоћу једноставније идеје вишег нивоа.

Практични пример апстракције могу бити моторне кочнице. Знамо шта кочница ради. Када притиснемо кочницу, мотоцикл ће се зауставити. Међутим, рад кочнице је скривен од нас.

Главна предност скривања рада кочнице је у томе што сада произвођач може различито применити кочницу за различите моторе, међутим, оно што ради кочница биће исто.

Узмимо пример који нам помаже да боље разумемо Јава апстракцију.

Пример 3: Јава апстракција

 abstract class Animal ( abstract void makeSound(); ) class Dog extends Animal ( // implementation of abstract method public void makeSound() ( System.out.println("Bark bark."); ) ) class Cat extends Animal ( // implementation of abstract method public void makeSound() ( System.out.println("Meows "); ) ) class Main ( public static void main(String() args) ( Dog d1 = new Dog(); d1.makeSound(); Cat c1 = new Cat(); c1.makeSound(); ) )

Излаз :

 Кора од коре Меовс

In the above example, we have created a superclass Animal. The superclass Animal has an abstract method makeSound().

The makeSound() method cannot be implemented inside Animal. It is because every animal makes different sounds. So, all the subclasses of Animal would have different implementation of makeSound().

So, the implementation of makeSound() in Animal is kept hidden.

Here, Dog makes its own implementation of makeSound() and Cat makes its own implementation of makeSound().

Note: We can also use interfaces to achieve abstraction in Java. To learn more, visit Java Interface.

Key Points to Remember

  • We use the abstract keyword to create abstract classes and methods.
  • An abstract method doesn't have any implementation (method body).
  • Класа која садржи апстрактне методе такође треба да буде апстрактна.
  • Не можемо створити објекте апстрактне класе.
  • Да бисмо применили карактеристике апстрактне класе, наследимо подкласе из ње и креирамо објекте поткласе.
  • Поткласа мора надјачати све апстрактне методе апстрактне класе. Међутим, ако је подкласа проглашена апстрактном, није обавезно надјачати апстрактне методе.
  • Статичким атрибутима и методама апстрактне класе можемо приступити помоћу референце апстрактне класе. На пример,
     Animal.staticMethod();

Занимљиви Чланци...