Interfață vs clasă abstractă în Java: Care este diferența?

Cuprins:

Anonim

Ce este Interface?

Interfața este un plan care poate fi utilizat pentru a implementa o clasă. Interfața nu conține metode concrete (metode care au cod). Toate metodele unei interfețe sunt metode abstracte.

O interfață nu poate fi instanțiată. Cu toate acestea, clasele care implementează interfețe pot fi instanțiate. Interfețele nu conțin niciodată variabile de instanță, dar pot conține variabile publice statice finale (de exemplu, variabile de clasă constantă)

Ce este clasa abstractă?

O clasă care are cuvântul cheie abstract în declarația sa se numește clasă abstractă. Clasele de abstract trebuie să aibă cel puțin o metodă abstractă. , adică metode fără corp. Poate avea mai multe metode concrete.

Clasele abstracte vă permit să creați planuri pentru clase concrete. Dar clasa moștenitoare ar trebui să implementeze metoda abstractă.

Clasele abstracte nu pot fi instanțiate.

Motive importante pentru utilizarea interfețelor

  • Interfețele sunt folosite pentru a realiza abstractizarea.
  • Proiectat pentru a sprijini rezoluția metodei dinamice în timpul rulării
  • Vă ajută să realizați o cuplare slabă.
  • Vă permite să separați definiția unei metode de ierarhia moștenirii

Motive importante pentru utilizarea clasei Abstract

  • Clasele abstracte oferă funcționalități implicite pentru subclasele.
  • Oferă un șablon pentru viitoarele clase specifice
  • Vă ajută să definiți o interfață comună pentru subclasele sale
  • Clasa abstractă permite reutilizarea codului.

Interfață vs. Clasa abstractă

O clasă abstractă vă permite să creați funcționalități pe care subclasele le pot implementa sau suprascrie, în timp ce o interfață vă permite doar să declarați funcționalitatea, dar nu să o implementați. O clasă poate extinde o singură clasă abstractă, în timp ce o clasă poate implementa mai multe interfețe.

Parametrii Interfață Clasa abstractă
Viteză Încet Rapid
Moșteniri multiple Implementați mai multe interfețe O singură clasă abstractă
Structura Metode abstracte Metode abstracte și concrete
Când se folosește Îmbunătățirea viitoare Pentru a evita independența
Moștenire / Implementare O clasă poate implementa mai multe interfețe Clasa poate moșteni o singură clasă abstractă
Implementare implicită În timp ce adăugați lucruri noi la interfață, este un coșmar să găsiți toți implementatorii și să implementați lucruri nou definite. În cazul Abstract Class, puteți profita de implementarea implicită.
Modificatori de acces Interfața nu are modificatori de acces. Tot ceea ce este definit în interfață este considerat modificator public. Clasa abstractă poate avea un modificator de acces.
Când se folosește Este mai bine să utilizați interfața atunci când diferite implementări partajează doar semnătura metodei. Ierarhia polimorfă a tipurilor de valori. Ar trebui să fie utilizat atunci când diferite implementări de același tip împărtășesc un comportament comun.
Câmpuri de date interfața nu poate conține câmpuri de date. clasa poate avea câmpuri de date.
Implicit de moștenire multiplă O clasă poate implementa numeroase interfețe. O clasă moștenește o singură clasă abstractă.
Implementare O interfață este abstractă, astfel încât nu poate furniza niciun cod. O clasă abstractă poate da cod complet, implicit, care ar trebui să fie suprascris.
Utilizarea modificatorilor de acces Nu puteți utiliza modificatori de acces pentru metodă, proprietăți etc. Puteți utiliza o clasă abstractă care conține modificatori de acces.
Utilizare Interfețele ajută la definirea abilităților periferice ale unei clase. O clasă abstractă definește identitatea unei clase.
Câmpuri definite Nu se pot defini câmpuri O clasă abstractă vă permite să definiți atât câmpuri, cât și constante
Moştenire O interfață poate moșteni mai multe interfețe, dar nu poate moșteni o clasă. O clasă abstractă poate moșteni o clasă și mai multe interfețe.
Constructor sau destructori O interfață nu poate declara constructori sau destructori. O clasă abstractă poate declara constructori și destructori.
Limita extensiilor Poate extinde orice număr de interfețe. Poate extinde o singură clasă sau o clasă abstractă odată.
Cuvânt cheie abstract Într-un cuvânt cheie de interfață abstractă, este opțional pentru declararea unei metode ca abstract. Într-o clasă abstractă, cuvântul cheie abstract este obligatoriu pentru declararea unei metode ca abstract.
Tipul clasei O interfață poate avea doar metode abstracte publice. O clasă abstractă are metode abstracte protejate și publice.

Exemplu de cod pentru interfață și clasă abstractă în Java

Urmează un exemplu de cod pentru a crea o interfață și o clasă abstractă în Java

Sintaxa interfeței

interface name{//methods}

Exemplu de interfață Java:

interface Pet {public void test();}class Dog implements Pet {public void test() {System.out.println("Interface Method Implemented");}public static void main(String args[]) {Pet p = new Dog();p.test();}}

Sintaxa claselor abstracte

abstract class name{// code}

Exemplu de clasă abstractă:

abstract class Shape {int b = 20;abstract public void calculateArea();}public class Rectangle extends Shape {public static void main(String args[]) {Rectangle obj = new Rectangle();obj.b = 200;obj.calculateArea();}public void calculateArea() {System.out.println("Area is " + (obj.b * obj.b));}}