Ključna razlika – nasljeđivanje u odnosu na sučelje u Javi
Java je programski jezik koji je razvio Sun Microsystems. Java se može koristiti za razvoj raznih aplikacija. To je jezik s više paradigmi koji podržava objektno orijentirano, strukturirano itd. Glavna prednost Jave je što podržava objektno orijentirano programiranje (OOP). Programer može kreirati klase i objekte. Postoje četiri stupa u OOP-u. To su nasljeđivanje, polimorfizam, apstrakcija i enkapsulacija. Nasljeđivanje i sučelja povezani su s OOP-om. Ključna razlika između nasljeđivanja i sučelja je u tome što nasljeđivanje izvodi nove klase iz postojećih klasa, a sučelje implementira apstraktne klase i višestruko nasljeđivanje.
Što je nasljeđivanje u Javi?
Nasljeđivanjem se može postići ponovna upotrebljivost koda. Nasljeđivanje pomaže u ponovnoj upotrebi atributa i metoda postojeće klase. Mehanizam izvođenja nove klase pomoću stare klase naziva se nasljeđivanje. Stara klasa je poznata kao roditeljska klasa ili super klasa. Izvedena klasa naziva se podklasa ili podklasa.
Sintaksa Java nasljeđivanja je sljedeća.
klasa subclass_name proširuje superclass_name {
deklaracija varijable;
deklaracija metode;
}
Koncept nasljeđivanja može se objasniti pomoću sljedećeg primjera. Pretpostavimo da postoji klasa koja se zove A kako slijedi.
javna klasa A{
javni void sum(){
System.out.println(“Sum”);
}
}
Ako želimo dodati novu metodu bez mijenjanja postojeće klase, možemo to učiniti na sljedeći način.
javna klasa B{
javni void sub(){
System.out.println(“Sub”);
}
}
Programer može koristiti nasljeđivanje za upotrebu klase A sum().
javna klasa B proširuje klasu A{
javni void sub(){
System.out.println(“Sub”);
}
}
U glavnoj funkciji moguće je kreirati objekt B i pozvati sub(), koji pripada klasi B i sum(), koji pripada klasi A korištenjem nasljeđivanja.
public static void main(String args){
B obj=novi B();
obj.sub();
obj.sum();
}
Postoje različite vrste nasljeđivanja. To su jednostruko nasljeđivanje, višestruko nasljeđivanje, nasljeđivanje na više razina i hijerarhijsko nasljeđivanje. Kod jednostrukog nasljeđivanja postoji jedna osnovna klasa i jedna izvedena klasa. Kod nasljeđivanja na više razina postoje tri klase, naime osnovna klasa, međuklasa i izvedena klasa. Srednja klasa nasljeđuje osnovnu klasu, a izvedena klasa nasljeđuje međuklasu. U hijerarhijskom nasljeđivanju postoji jedna osnovna klasa i mnogo izvedenih klasa. Postoji poseban tip poznat kao hibridno nasljeđivanje. To je kombinacija dvije ili više vrsta nasljeđivanja.
Slika 01: Nasljeđivanje
U višestrukom nasljeđivanju postoji mnogo osnovnih klasa i jedna izvedena klasa. Pretpostavimo da su klase A i B osnovne klase. Klasa C je izvedena klasa. Ako obje klase A i B imaju istu metodu i programer poziva tu metodu iz izvedene klase, to će uzrokovati problem dvosmislenosti. Nasljeđivanje dviju klasa može uzrokovati pogrešku tijekom kompajliranja. Stoga višestruko nasljeđivanje nije podržano u Javi. Sučelje se može koristiti za prevladavanje tog problema.
Što je sučelje u Javi?
Apstrakcija je proces skrivanja detalja implementacije i prikazivanja samo funkcionalnosti korisniku. Apstrakcija se može postići korištenjem apstraktnih klasa ili sučelja. Apstraktna metoda je metoda bez implementacije. Klasa s najmanje jednom apstraktnom metodom je apstraktna klasa. Primjer apstraktne klase je sljedeći.
apstraktna klasa A{
apstraktni void sum();
}
Pretpostavimo da postoje dvije apstraktne klase kao što su A i B. Za implementaciju apstraktnih metoda A i B, kreirana je nova klasa C. Tada bi klasa C trebala proširiti i A i B. Ali višestruko nasljeđivanje nije podržano u Javi. Stoga treba koristiti sučelja. Sučelja se mogu koristiti za deklariranje metoda, ali nije moguće definirati metode. Nije moguće kreirati objekt pomoću sučelja. Klasa C treba implementirati sve metode u sučelju A i B.
sučelje A{
void sum();
}
sučelje B{
void sub();
}
klasa C implementira A, B{
javni void sum(){
System.out.println(“Zbroj”);
}
javni void sub(){
System.out.println(“Subtraction”);
}
}
Sada je u glavnom programu moguće kreirati objekt u C-u i pozvati obje metode.
public static void main (String args) {
C obj=novi C();
obj.sum();
obj.sub();
}
Dakle, sučelja se mogu koristiti za implementaciju višestrukog nasljeđivanja.
Druga upotreba sučelja je da pruža sigurnost. Pogledajte donji kod.
sučelje A {
nevažeći zbroj ();
}
klasa B implementira A {
javni nevažeći zbroj () {
System.out.println(“Zbroj”);
}
javno nevažeće množenje () {
System.out.println(“Množenje”);
}
}
Kada kreirate objekt od B, moguće je pozvati obje metode sum () i multiply (). Ako programer želi ograničiti korištenje funkcije multiply (), to je moguće na sljedeći način.
public static void main(String args){
A obj=novo B();
obj.sum();
}
A obj=novi B(); stvorit će objekt. Tip je A, a memorija je dodijeljena kao B. Moguće je pozvati sum(), ali ne može izvršiti multiply(). Ovo se ograničenje provodi pomoću sučelja.
Koje su sličnosti između nasljeđivanja i sučelja u Javi?
- Oba koncepta su povezana s objektno orijentiranim programiranjem
- Oboje predstavljaju odnos IS-A.
Koja je razlika između nasljeđivanja i sučelja u Javi?
Nasljeđivanje vs sučelje u Javi |
|
Nasljeđivanje je OOP koncept za izvođenje novih klasa iz postojećih klasa. | Sučelje je mehanizam u OOP-u za implementaciju apstrakcije i višestrukog nasljeđivanja. |
Upotreba | |
Nasljeđivanje omogućuje ponovnu upotrebu koda. | Sučelja pružaju apstrakciju i višestruko nasljeđivanje. |
Sažetak – Nasljeđivanje naspram sučelja u Javi
Java je programski jezik s više paradigmi koji podržava objektno orijentirano programiranje. Nasljeđivanje i sučelja povezani su s objektno orijentiranim programiranjem. Razlika između nasljeđivanja i sučelja je u tome što nasljeđivanje izvodi nove klase iz postojećih klasa, a sučelja implementiraju apstraktne klase i višestruko nasljeđivanje.
Preuzmite PDF verziju Nasljeđivanja u odnosu na sučelje u Javi
Možete preuzeti PDF verziju ovog članka i koristiti ga za izvanmrežne svrhe prema napomeni o citatu. Ovdje preuzmite PDF verziju Razlika između nasljeđivanja i sučelja u Javi