Laajennusten ja toteutusten ero Javassa esimerkkien avulla

Javan Autoboxing- ja Unboxing-artikkelin jälkeen opimme laajennusten ja toteutusten eron Javassa. Molemmat ovat Javassa varattuja avainsanoja, joita käytämme periyttääksemme jo olemassa olevan vanhemman lohkon ominaisuudet juuri luotuun lapsilohkoon. Niitä käytetään eri käsitteiden toteuttamiseen Javassa. Opettelemme, mikä on Java extends-avainsana ja mikä on Java implements-avainsana esimerkkien avulla.

Aluksi kerrataan yksityiskohtaisesti Javan Autoboxing- ja Unboxing-käsite Techvidvanin kanssa.

Pidetään sinut ajan tasalla uusimmista teknologiatrendeistä, Liity TechVidvaniin Telegramissa

Mikä on extends Javassa?

  • Javassa extends-avainsana on hyödyllinen silloin, kun haluamme periä vanhemman luokan ominaisuuksia ja metodeja lapsiluokassamme.
  • Tällä extends-avainsanalla luodaan kahden luokan välinen periytymissuhde.
  • Käytämme sitä luodessamme johdettua luokkaa vanhemmasta luokasta tai luodessamme aliluokkaa yläluokasta.
  • Sääntö on, että luokka voi laajentaa korkeintaan yhtä luokkaa.
  • Kun luokka laajentaa toista luokkaa, se voi ohittaa yläluokassa määritellyt metodit.
  • Käytämme extends-avainsanaa myös silloin, kun haluamme rajapinnan laajentavan tai perivän toisen rajapinnan.

Tutustu Javan periytymisen käsitteeseen yksityiskohtaisesti Techvidvanin avulla.

Koodi, jolla ymmärrät extends-avainsanan Javassa:

package com.techvidvan.extendsvsimplements;//Parent classclass Country{ String name = "India"; public void display() { System.out.println("This is my country India"); }}//child class extends the parent classclass City extends Country{ // defining additional properties to the derived class String state = "Rajasthan"; String city = "Jaipur";}public class ExtendsDemo{ public static void main(String args) { City obj=new City(); obj.display(); System.out.println("Name of the city is: " + obj.name); System.out.println("City is present in " + obj.state + "state"); }}

Tulos:

Tämä on maani Intia
Kaupungin nimi on: Jaipur
Kaupunki sijaitsee Rajasthanin osavaltiossa

Mitä on Implements Javassa?

  • Käytämme avainsanaa implements, kun toteutamme rajapintaa.
  • Luokka voi toteuttaa rajapinnan implements-avainsanalla.
  • Rajapinta on Javassa abstrakti tyyppi, joka sisältää kokoelman abstrakteja menetelmiä. Emme voi instantioida rajapintaa eli emme voi luoda objekteja rajapinnasta.
  • Kun luokka toteuttaa rajapinnan, sen on määriteltävä kaikki rajapinnan sisällä olevat metodit tarjoamalla kunkin metodin toteutus.
  • Jos luokka, joka toteuttaa rajapinnan, ei määrittele tai ei sisällä toteutusta kaikille rajapinnan metodeille, meidän on ilmoitettava se abstraktiksi. Muuten kääntäjä antaa virheilmoituksen.
  • Java ei tue moniperinnöllisyyttä, mutta voimme toteuttaa moniperinnöllisyyden koodissamme käyttämällä useita rajapintoja Javassa.
  • Liittymä ei voi koskaan toteuttaa toista rajapintaa. Syynä on se, että jos rajapinta toteuttaa toisen rajapinnan, sen on määriteltävä kaikki sen rajapinnan metodit, jonka se toteuttaa, mutta rajapinnalla ei voi olla mitään konkreettisia metodeja, joten rajapinta ei voi toteuttaa toista rajapintaa Javassa.

Vahvista tietämystäsi Javan rajapinnoista yksityiskohtaisesti Techvidvanin avulla.

Koodi ymmärtääksesi javan implements-avainsanan toteutuksen:

package com.techvidvan.extendsvsimplements;//Creating an interfaceinterface MyInterface{ //Declaring abstract methods inside it void displayString(String s); void showNumber(int i);}//Implementing the interface using the implements keywordpublic class MyClass implements MyInterface{ //Implementing all the methods declared in the interface public void displayString(String s) { System.out.println("The string value is: " +s); } public void showNumber(int i) { System.out.println("The integer value is: " +i); } public static void main(String args) { MyClass obj = new MyClass(); obj.displayString("TechVidvan"); obj.showNumber(20); }}

Tulos:

Jaavan merkkijonon arvo on: TechVidvan
Kokonaislukuarvo on: 20

Esimerkki useista rajapinnoista

Nyt näemme esimerkin, jossa yksi luokka toteuttaa useamman kuin yhden rajapinnan samaan aikaan ja näin ollen perustaa useita perintöjä Javassa. Luomme 3 rajapintaa: Walkable, Swimmable ja Talkable ja yhden luokan HumanBeing, joka toteuttaa kaikki 3 rajapintaa.

1. rajapinta: Walkable.java

package com.techvidvan.extendsvsimplements;public interface Walkable { public void walk();}

2. rajapinta: Swimmable.java

package com.techvidvan.extendsvsimplements;public interface Swimmable{ public void swim();}

3. rajapinta: Talkable.java

package com.techvidvan.extendsvsimplements;public interface Talkable { public void talk();}

4. Class: HumanBeing.java

package com.techvidvan.extendsvsimplements;\To implement multiple interfaces we must use commas to separate thempublic class HumanBeing implements Walkable, Swimmable, Talkable{ @Override public void walk() { System.out.println("I can walk"); } @Override public void swim() { System.out.println("I can swim"); } @Override public void talk() { System.out.println("I can talk"); } public static void main(String args) { HumanBeing human= new HumanBeing(); human.walk(); human.swim(); human.talk(); }}

Tulos:

Minä osaan kävellä
Minä osaan uida
Minä osaan puhua

Difference between Extends and Implements in Java

Olemmekin nähneet esimerkkejä kummastakin avainsanasta, katsokaamme nyt java extends vs. implements yksityiskohtaisesti:

Vertailuominaisuudet Extends Implements
Implementaatio Avainsanaa extends käytetään silloin, kun luokka haluaa periä kaikki ominaisuudet joltain toiselta luokalta tai rajapinnalta, joka haluaa periä rajapinnan. Käytetään implements-avainsanaa, kun halutaan luokan toteuttavan rajapinnan.
Yhteydessä Yhteydessä periytymiseen Yhteydessä abstraktioon
Metodit Lapsiluokka, joka laajentaa vanhemman luokan, voi ohittaa tai olla ohittamatta vanhempien luokkien kaikkia metodeja. Liitännän toteuttavan luokan on määriteltävä tai tarjottava kaikkien rajapinnassa ilmoitettujen metodien toteutus, tai muuten luokka on ilmoitettava abstraktiksi.
Luokka Apiluokka tai useampi kuin yksi alaluokka voi laajentaa vain yhtä vanhempaa luokkaa yhtä aikaa. Luokka voi toteuttaa yhtä aikaa yhden tai useamman rajapinnan.
Interfacen Interfacen voi laajentaa kuinka monta rajapintaa tahansa. Vaikka rajapinta ei voi koskaan toteuttaa mitään muuta rajapintaa.

Yhteenveto

Loppujen lopuksi tulemme siis artikkelin loppuun extendsin ja implementsin erosta javassa. Kävimme läpi näiden avainsanojen tärkeimmät erot. Molemmat käyttävät suoraan tai epäsuorasti periytymisen käsitettä Javassa. Voimme kuitenkin päätellä, että rajapinnan toteuttaminen tarjoaa enemmän joustavuutta kuin luokan laajentaminen, koska voimme laajentaa yhtä luokkaa, mutta voimme toteuttaa useita perintöjä Javassa. Toivottavasti tämän artikkelin lukemisen jälkeen olet ehkä vihdoin ymmärtänyt avainsanan extends vs. implements Javassa.

Vastaa

Sähköpostiosoitettasi ei julkaista.