Avainero – perinnöllisyys vs. käyttöliittymä Javassa
Java on Sun Microsystemsin kehittämä ohjelmointikieli. Javaa voidaan käyttää erilaisten sovellusten kehittämiseen. Se on moniparadigmakieli, joka tukee olio-, strukturoituja jne. Java:n tärkein etu on, että se tukee olio-ohjelmointia (OOP). Ohjelmoija voi luoda luokkia ja objekteja. OOP:ssa on neljä pilaria. Ne ovat perinnöllisyys, polymorfismi, abstraktio ja kapselointi. Periytys ja rajapinnat liittyvät OOP:hen. Keskeinen ero periytymisen ja rajapinnan välillä on se, että periytyminen on johtaa uusien luokkien olemassa olevista luokista ja rajapinta on toteuttaa abstrakteja luokkia ja moninkertaista periytymistä.
Mitä on perintö Javassa?
Perinnöllä voidaan saada koodi uudelleen käytettäviksi. Periytys auttaa käyttämään uudelleen olemassa olevan luokan attribuutteja ja menetelmiä. Mekanismia, jolla uusi luokka johdetaan vanhan luokan avulla, kutsutaan periytymiseksi. Vanha luokka tunnetaan yläluokkana tai superluokkana. Johdettua luokkaa kutsutaan lapsiluokiksi tai alaluokiksi.
Javan periytymisen syntaksi on seuraava.
luokan alaluokan_nimi laajentaa superluokan_nimi {
muuttujailmoitus;
menetelmän ilmoitus;
}
Perinnön käsite voidaan selittää seuraavan esimerkin avulla. Oletetaan, että on olemassa luokka nimeltä A seuraavasti.
julkinen luokka A{
julkinen void summa(){
System.out.println("Summa");
}
}
Jos haluamme lisätä uuden menetelmän muuttamatta olemassa olevaa luokkaa, voimme tehdä sen seuraavasti.
julkinen luokka B{
julkinen void sub(){
System.out.println("Sub");
}
}
Ohjelmoija voi käyttää periytymistä käyttääkseen luokan A summaa().
julkinen luokka B laajentaa luokkaa A{
julkinen void sub(){
System.out.println("Sub");
}
}
Pääfunktiossa on mahdollista luoda B:n objekti ja kutsua sub(), joka kuuluu luokkaan B ja sum(), joka kuuluu luokkaan A perinnöllisyyden avulla.
julkinen staattinen void main(String args){
B obj=uusi B();
obj.sub();
obj.sum();
}
Perintöjä on erilaisia. Ne ovat yksiperintö, moniperintö, monitasoinen periytyminen ja hierarkkinen perintö. Yksittäisessä perinnössä on yksi perusluokka ja yksi johdettu luokka. Monitasoisessa perinnössä on kolme luokkaa, nimittäin perusluokka, väliluokka ja johdettu luokka. Väliluokka perii perusluokasta ja johdettu luokka väliluokasta. Hierarkkisessa perinnössä on yksi perusluokka ja useita johdettuja luokkia. On olemassa erityinen tyyppi, joka tunnetaan nimellä hybridiperintö. Se on kahden tai useamman perinnön yhdistelmä.
Kuva 01: Perintö
Moniperinnössä on useita perusluokkia ja yksi johdettu luokka. Oletetaan, että luokka A ja B ovat perusluokat. Luokka C on johdettu luokka. Jos sekä A- että B-luokilla on sama menetelmä ja ohjelmoija kutsuu tätä menetelmää johdetusta luokasta, se aiheuttaa epäselvyysongelman. Kahden luokan periminen voi aiheuttaa käännösaikavirheen. Siksi moniperintöä ei tueta Javassa. Tämän ongelman voittamiseksi voidaan käyttää käyttöliittymää.
Mikä on Java-liittymä?
Abstraktio on prosessi, jossa piilotetaan toteutustiedot ja näytetään vain toiminnallisuudet käyttäjälle. Abstraktio voidaan saavuttaa käyttämällä abstrakteja luokkia tai rajapintoja. Abstrakti menetelmä on menetelmä ilman toteutusta. Luokka, jossa on vähintään yksi abstrakti menetelmä, on abstrakti luokka. Esimerkki abstraktista luokasta on seuraava.
abstrakti luokka A{
abstract void summa();
}
Oletetaan, että on olemassa kaksi abstraktia luokkaa A ja B. A:n ja B:n abstraktien menetelmien toteuttamiseksi luodaan uusi luokka C. Silloin luokan C pitäisi laajentaa sekä A:ta että B:tä, mutta moniperintöä ei tueta Javassa. Siksi tulisi käyttää rajapintoja. Rajapintoja voidaan käyttää menetelmien ilmoittamiseen, mutta menetelmiä ei voida määritellä. Objektia ei voi luoda rajapintojen avulla. Luokan C tulisi toteuttaa kaikki menetelmät liitännöissä A ja B.
liitäntä A{
void summa();
}
liitäntä B{
void sub();
}
luokan C työkoneet A, B{
julkinen void summa(){
System.out.println("Summaatio");
}
julkinen void sub(){
System.out.println("Vähennys");
}
}
Nyt pääohjelmassa on mahdollista luoda C:n objekti ja kutsua molempia menetelmiä.
julkinen staattinen void main (merkkijono args) {
C obj=uusi C();
obj.sum();
obj.sub();
}
Joten, liitäntöjä voidaan käyttää usean periytymisen toteuttamiseen.
Toinen käyttöliittymien käyttötarkoitus on se, että ne tarjoavat turvallisuutta. Katso alla oleva koodi.
liitäntä A {
void summa ();
}
luokka B toteuttaa A:n {
julkinen mitätön summa () {
System.out.println("Summaatio");
}
julkinen void kerroin () {
System.out.println("Kertokerta");
}
}
B:n objektia luotaessa on mahdollista kutsua molempia menetelmiä summa () ja kertoa (). Jos ohjelmoija haluaa rajoittaa käyttämällä kerronta () -toimintoa, se on mahdollista seuraavasti.
julkinen staattinen void main(String args){
A obj=uusi B();
obj.sum();
}
A obj=uusi B(); luo objektin. Se on tyyppiä A ja muisti on varattu nimellä B. On mahdollista kutsua summa():ta, mutta ei voi suorittaa multiply()-komentoa. Tämä rajoitus tehdään liitäntöjen avulla.
Mitä yhtäläisyyksiä periytymisen ja käyttöliittymän välillä on Javassa?
- Molemmat käsitteet liittyvät olio-ohjelmointiin
- Molemmat edustavat IS-A-suhdetta.
Mitä eroa on perinnöllä ja käyttöliittymällä Javassa?
Perintö vs. käyttöliittymä Javassa |
|
Perintö on OOP-konsepti uusien luokkien johtamiseksi olemassa olevista luokista. | Liitäntä on OOP:n mekanismi abstraktion ja moniperinnön toteuttamiseksi. |
Käyttö | |
Perintö mahdollistaa koodin uudelleenkäytettävyyden. | Liitännät tarjoavat abstraktion ja moninkertaisen periytymisen. |
Yhteenveto – Periytys vs. käyttöliittymä Javassa
Java on moniparadigmaohjelmointikieli, joka tukee olioohjelmointia. Periytys ja rajapinnat liittyvät olio-ohjelmointiin. Ero periytymisen ja rajapinnan välillä on se, että periytyminen on uusien luokkien johtamista olemassa olevista luokista ja rajapinnat on abstraktien luokkien ja moniperinnön toteuttaminen.
Lataa PDF-versio Inheritance vs Interface Javassa
Voit ladata tämän artikkelin PDF-version ja käyttää sitä offline-tarkoituksiin lainaushuomautuksen mukaisesti. Lataa PDF-versio tästä Ero perinnön ja käyttöliittymän välillä Javassa