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