Što je sučelje?
Sučelje je nacrt koji se može koristiti za implementaciju klase. Sučelje ne sadrži konkretne metode (metode koje imaju kod). Sve metode sučelja su apstraktne metode.
Sučelje se ne može instancirati. Međutim, klase koje implementiraju sučelja mogu se instancirati. Sučelja nikad ne sadrže varijable instance, ali mogu sadržavati javne statičke konačne varijable (tj. Varijable konstantne klase)
Što je sažetak?
Klasa koja u svojoj deklaraciji ima sažetak ključne riječi naziva se apstraktna klasa. Apstraktna nastava trebala bi imati barem jednu apstraktnu metodu. , tj. metode bez tijela. Može imati više konkretnih metoda.
Apstraktni tečajevi omogućuju vam izradu nacrta za konkretne satove. Ali klasa nasljeđivanja trebala bi implementirati apstraktnu metodu.
Apstraktne klase ne mogu se instancirati.
Važni razlozi za korištenje sučelja
- Sučelja se koriste za postizanje apstrakcije.
- Dizajniran za podršku dinamičkoj razlučivosti metode u vrijeme izvođenja
- Pomaže vam u postizanju labavog spajanja.
- Omogućuje vam odvajanje definicije metode od hijerarhije nasljeđivanja
Važni razlozi korištenja apstraktne nastave
- Apstraktne klase nude zadane funkcije za potklase.
- Pruža predložak za buduće određene predmete
- Pomaže vam u definiranju zajedničkog sučelja za njegove podrazrede
- Apstraktna klasa omogućuje ponovnu upotrebu koda.
Sučelje vs. Sažetak klase
Apstraktna klasa omogućuje vam da napravite funkcionalnost koju potklase mogu implementirati ili nadjačati, dok sučelje dopušta samo navođenje funkcionalnosti, ali ne i njezinu implementaciju. Klasa može proširiti samo jednu apstraktnu klasu, dok klasa može implementirati više sučelja.
Parametri | Sučelje | Sažetak klase |
---|---|---|
Ubrzati | Usporiti | Brzo |
Više nasljedstva | Implementirati nekoliko sučelja | Samo jedan apstraktni razred |
Struktura | Apstraktne metode | Sažetak i konkretne metode |
Kada koristiti | Buduće poboljšanje | Da bi se izbjegla neovisnost |
Nasljeđivanje / provedba | Klasa može implementirati više sučelja | Klasa može naslijediti samo jedan apstraktni razred |
Zadana implementacija | Dok dodajete nove stvari na sučelje, noćna je mora pronaći sve implementatore i implementirati novo definirane stvari. | U slučaju Apstraktne klase, možete iskoristiti zadanu implementaciju. |
Modifikatori pristupa | Sučelje nema modifikatore pristupa. Sve definirano unutar sučelja pretpostavlja se kao javni modifikator. | Apstraktna klasa može imati modifikator pristupa. |
Kada koristiti | Bolje je koristiti sučelje kada razne implementacije dijele samo potpis metode. Polimorfna hijerarhija tipova vrijednosti. | Treba ga koristiti kada različite implementacije iste vrste dijele zajedničko ponašanje. |
Polja podataka | sučelje ne može sadržavati podatkovna polja. | razred može imati podatkovna polja. |
Zadatak višestrukog nasljeđivanja | Klasa može implementirati brojna sučelja. | Klasa nasljeđuje samo jednu apstraktnu klasu. |
Provedba | Sučelje je apstraktno tako da ne može pružiti nikakav kod. | Apstraktna klasa može dati cjeloviti, zadani kôd koji treba nadjačati. |
Korištenje Access modifikatora | Ne možete koristiti modifikatore pristupa za metodu, svojstva itd. | Možete koristiti apstraktnu klasu koja sadrži modifikatore pristupa. |
Upotreba | Sučelja pomažu u definiranju perifernih sposobnosti klase. | Apstraktna klasa definira identitet klase. |
Definirana polja | Nijedno polje se ne može definirati | Apstraktna klasa omogućuje vam definiranje polja i konstanti |
Nasljeđivanje | Sučelje može naslijediti više sučelja, ali ne može naslijediti klasu. | Apstraktna klasa može naslijediti klasu i više sučelja. |
Konstruktor ili destruktori | Sučelje ne može deklarirati konstruktore ili destruktore. | Apstraktna klasa može deklarirati konstruktore i destruktore. |
Ograničenje proširenja | Može proširiti bilo koji broj sučelja. | Može istodobno proširiti samo jedan razred ili jedan apstraktni razred. |
Sažetak ključne riječi | U apstraktnom sučelju ključna riječ nije obavezna za deklariranje metode kao sažetak. | U apstraktnoj klasi, ključna riječ sažetak obavezna je za proglašavanje metode apstraktnom. |
Vrsta razreda | Sučelje može imati samo javne apstraktne metode. | Apstraktna klasa ima zaštićene i javne apstraktne metode. |
Uzorak koda za klasu sučelja i sažetka u Javi
Slijedi uzorak koda za stvaranje sučelja i apstraktne klase u Javi
Sintaksa sučelja
interface name{//methods}
Primjer Java sučelja:
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();}}
Sintaksa sažetka razreda
abstract class name{// code}
Primjer apstraktne nastave:
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));}}