Mis on liides?
Liides on plaan, mida saab klassi rakendamiseks kasutada. Liides ei sisalda konkreetseid meetodeid (meetodid, millel on kood). Kõik liidese meetodid on abstraktsed meetodid.
Liidest ei saa instantsida. Liideseid rakendavaid klasse saab siiski instantiseerida. Liidesed ei sisalda kunagi eksemplari muutujaid, kuid võivad sisaldada avalikke staatilisi lõplikke muutujaid (st konstantseid klassimuutujaid)
Mis on abstraktne klass?
Klass, mille deklaratsioonis on abstraktne märksõna, nimetatakse abstraktseks klassiks. Abstraktsetes klassides peaks olema vähemalt üks abstraktne meetod. , st meetodid ilma kehata. Sellel võib olla mitu konkreetset meetodit.
Abstraktsed klassid võimaldavad teil luua konkreetse klassi klasside kavandeid. Kuid pärandklass peaks rakendama abstraktse meetodi.
Abstraktseid klasse ei saa instantsida.
Liideste kasutamise olulised põhjused
- Abstraktsiooni saavutamiseks kasutatakse liideseid.
- Mõeldud dünaamilise meetodi eraldusvõime toetamiseks tööajal
- See aitab teil saavutada lahtise haakimise.
- Võimaldab eraldada meetodi definitsiooni pärandihierarhiast
Olulised põhjused abstraktse klassi kasutamiseks
- Abstraktsed klassid pakuvad alaklasside vaikefunktsionaalsust.
- Pakub malli tulevaste konkreetsete klasside jaoks
- Aitab teil määratleda selle alaklasside jaoks ühise liidese
- Abstraktne klass võimaldab koodi korduvkasutamist.
Liides Vs. Abstraktne klass
Abstraktne klass võimaldab teil teha funktsioone, mida alaklassid saavad rakendada või alistada, liides lubab teil funktsionaalsust ainult kinnitada, kuid mitte rakendada. Klass võib laiendada ainult ühte abstraktset klassi, klass aga rakendada mitut liidest.
Parameetrid | Liides | Abstraktne tund |
---|---|---|
Kiirus | Aeglane | Kiire |
Mitu pärandit | Rakendage mitu liidest | Ainult üks abstraktne klass |
Struktuur | Abstraktsed meetodid | Abstraktsed ja konkreetsed meetodid |
Millal kasutada | Tuleviku täiustamine | Sõltumatuse vältimiseks |
Pärimine / rakendamine | Klass võib rakendada mitut liidest | Klass võib pärida ainult ühe abstraktse klassi |
Vaikimisi juurutamine | Uue kraami lisamine liidesesse on õudusunenägu kõigi rakendajate leidmiseks ja äsja määratletud asja juurutamiseks. | Abstraktse klassi korral saate kasutada vaikimisi rakendamist. |
Juurdepääsu modifikaatorid | Liidesel pole juurdepääsu modifikaatoreid. Kõik, mis on liidese sees määratletud, on avalik modifikaator. | Abstraktklassil võib olla juurdepääsu modifikaator. |
Millal kasutada | Parem on kasutada liidest, kui erinevad rakendused jagavad ainult meetodi allkirja. Väärtustüüpide polümorfne hierarhia. | Seda tuleks kasutada siis, kui sama tüüpi rakendustel on sama käitumine. |
Andmeväljad | liides ei tohi sisaldada andmevälju. | klassil võivad olla andmeväljad. |
Mitme pärandi vaikeväärtus | Klass võib rakendada arvukalt liideseid. | Klass pärib ainult ühe abstraktse klassi. |
Rakendamine | Liides on abstraktne, nii et see ei saa koodi pakkuda. | Abstraktne klass võib anda täieliku vaikekoodi, mis tuleks tühistada. |
Juurdepääsu modifikaatorite kasutamine | Te ei saa kasutada meetodi, omaduste jms jaoks juurdepääsu modifikaatoreid. | Võite kasutada abstraktset klassi, mis sisaldab juurdepääsu modifikaatoreid. |
Kasutamine | Liidesed aitavad määratleda klassi perifeerseid võimeid. | Abstraktne klass määratleb klassi identiteedi. |
Määratletud väljad | Ühtegi välja ei saa määratleda | Abstraktne klass võimaldab määratleda nii väljad kui konstandid |
Pärand | Liides võib pärida mitut liidest, kuid ei saa pärida klassi. | Abstraktne klass võib pärida klassi ja mitu liidest. |
Konstruktor või destruktorid | Liides ei saa deklareerida konstruktoreid ega destruktoreid. | Abstraktne klass võib kuulutada konstruktorid ja destruktorid. |
Laienduste piir | See võib laiendada mis tahes arvu liideseid. | See võib korraga pikendada ainult ühte klassi või ühte abstraktset klassi. |
Abstraktne märksõna | Abstraktse liidese märksõnas on meetodi abstraktseks kuulutamiseks valikuline. | Abstraktses klassis on abstraktne märksõna kohustuslik meetodi abstraktseks kuulutamiseks. |
Klassi tüüp | Liidesel võivad olla ainult avalikud abstraktsed meetodid. | Abstraktses klassis on kaitstud ja avalikud abstraktsed meetodid. |
Java liidese ja abstraktse klassi näidiskood
Järgnevalt on näidiskood Java-liidese ja abstraktse klassi loomiseks
Liidese süntaks
interface name{//methods}
Java liidese näide:
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();}}
Abstraktne klassi süntaks
abstract class name{// code}
Abstraktne klassi näide:
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));}}