Ključna razlika – nasljeđivanje u odnosu na interfejs u Javi
Java je programski jezik koji je razvio Sun Microsystems. Java se može koristiti za razvoj različitih aplikacija. To je višeparadigmatski jezik koji podržava objektno orijentisano, strukturirano itd. Glavna prednost Jave je ta što podržava objektno orijentisano programiranje (OOP). Programer može kreirati klase i objekte. U OOP-u postoje četiri stuba. To su nasljeđivanje, polimorfizam, apstrakcija i inkapsulacija. Nasljeđivanje i interfejsi su povezani sa OOP-om. Ključna razlika između nasljeđivanja i interfejsa je u tome što je nasljeđivanje izvođenje novih klasa iz postojećih klasa, a interfejs je implementacija apstraktnih klasa i višestrukog nasljeđivanja.
Šta je nasljeđivanje u Javi?
Nasljeđivanjem se može postići ponovna upotrebljivost koda. Nasljeđivanje pomaže da se ponovo koriste atributi i metode postojeće klase. Mehanizam izvođenja nove klase korištenjem stare klase naziva se nasljeđivanje. Stara klasa je poznata kao roditeljska klasa ili super klasa. Izvedena klasa se zove podklasa ili podklasa.
Sintaksa Java nasljeđivanja je sljedeća.
class subclass_name proširuje naziv_superklase {
deklaracija varijable;
deklaracija metode;
}
Koncept nasljeđivanja može se objasniti korištenjem sljedećeg primjera. Pretpostavimo da postoji klasa koja se zove A kako slijedi.
javna klasa A{
javna poništena suma(){
System.out.println(“Sum”);
}
}
Ako želimo dodati novu metodu bez promjene postojeće klase, možemo to učiniti na sljedeći način.
javna klasa B{
public void sub(){
System.out.println(“Sub”);
}
}
Programer može koristiti nasljeđivanje za korištenje klase A sum().
javna klasa B proširuje klasu A{
public void sub(){
System.out.println(“Sub”);
}
}
U glavnoj funkciji, moguće je kreirati objekat B i pozvati sub(), koji pripada klasi B i sum(), koji pripada klasi A koristeći nasljeđivanje.
public static void main(String args){
B obj=new B();
obj.sub();
obj.sum();
}
Postoje različite vrste nasljeđa. Oni su jednostruko nasljeđivanje, višestruko nasljeđivanje, nasljeđivanje na više nivoa i hijerarhijsko nasljeđivanje. U pojedinačnom nasljeđivanju postoji jedna osnovna i jedna izvedena klasa. U nasljeđivanju na više nivoa, postoje tri klase, odnosno osnovna klasa, srednja klasa i izvedena klasa. Srednja klasa nasljeđuje od osnovne klase, a izvedena klasa nasljeđuje od srednje klase. 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đa.
Slika 01: Naslijeđe
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 i A i B klase imaju isti metod i programer pozove tu metodu iz izvedene klase, to će uzrokovati problem dvosmislenosti. Nasljeđivanje dvije klase može uzrokovati grešku u vremenu prevođenja. Stoga, višestruko nasljeđivanje nije podržano u Javi. Interfejs se može koristiti za prevazilaženje tog problema.
Šta je interfejs u Javi?
Apstrakcija je proces skrivanja detalja implementacije i prikazivanja samo funkcionalnosti korisniku. Apstrakcija se može postići korišćenjem apstraktnih klasa ili interfejsa. Apstraktna metoda je metoda bez implementacije. Klasa sa 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 A i B. Za implementaciju apstraktnih metoda A i B, kreira se 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 bi trebalo koristiti interfejse. Interfejsi se mogu koristiti za deklariranje metoda, ali nije moguće definirati metode. Nije moguće kreirati objekat koristeći interfejse. Klasa C bi trebala implementirati sve metode u interfejsu A i B.
interface A{
void sum();
}
interfejs B{
void sub();
}
oprema klase C A, B{
javna poništena suma(){
System.out.println(“Summation”);
}
public void sub(){
System.out.println(“Subtraction”);
}
}
Sada je u glavnom programu moguće kreirati objekat C i pozvati oba metoda.
public static void main (String args) {
C obj=new C();
obj.sum();
obj.sub();
}
Dakle, interfejsi se mogu koristiti za implementaciju višestrukog nasljeđivanja.
Još jedna upotreba interfejsa je da pruža sigurnost. Pogledajte kod ispod.
interfejs A {
nevažeći iznos ();
}
oprema B klase A {
javna poništena suma () {
System.out.println(“Summation”);
}
public void multiply () {
System.out.println(“Množenje”);
}
}
Prilikom kreiranja objekta od B, moguće je pozvati obje metode sum () i multiply (). Ako programer želi ograničiti korištenjem funkcije množenja (), moguće je na sljedeći način.
public static void main(String args){
A obj=new B();
obj.sum();
}
A obj=new B(); će kreirati objekat. Tipa je A i memorija je dodijeljena kao B. Moguće je pozvati sum() ali ne može izvršiti multiply(). Ovo ograničenje se vrši korištenjem interfejsa.
Koje su sličnosti između nasljeđivanja i interfejsa u Javi?
- Oba koncepta se odnose na objektno orijentirano programiranje
- Oba predstavljaju IS-A odnos.
Koja je razlika između nasljeđivanja i sučelja u Javi?
Nasljeđivanje vs Interfejs u Javi |
|
Nasljeđivanje je OOP koncept za izvođenje novih klasa iz postojećih klasa. | Interfejs je mehanizam u OOP-u za implementaciju apstrakcije i višestrukog nasljeđivanja. |
Upotreba | |
Nasljeđivanje omogućava ponovnu upotrebu koda. | Sučelja pružaju apstrakciju i višestruko nasljeđivanje. |
Sažetak – Nasljeđivanje vs Interfejs u Javi
Java je višeparadigmatski programski jezik koji podržava objektno orijentirano programiranje. Nasljeđivanje i sučelja se odnose na objektno orijentirano programiranje. Razlika između nasljeđivanja i interfejsa je u tome što je nasljeđivanje izvođenje novih klasa iz postojećih klasa, a interfejsi implementacija apstraktnih klasa i višestrukog nasljeđivanja.
Preuzmite PDF verziju nasljeđivanja vs Interface u Javi
Možete preuzeti PDF verziju ovog članka i koristiti ga za vanmrežne svrhe prema napomeni o citatu. Molimo preuzmite PDF verziju ovdje Razlika između nasljeđivanja i interfejsa u Javi