Erinevus abstraktse klassi ja liidese vahel Java

Peamised erinevused abstraktse klassi ja liidese vahel Java

  • Liideses saab klass rakendada mitut liidest, samas kui klass saab pรคrida ainult รผhe abstraktse klassi.
  • In Interface pole juurdepรครคsu modifikaatoreid. Eeldatakse, et kรตigel, mis on liideses mรครคratletud, on avalik modifikaator, samas kui abstraktsel klassil vรตib olla juurdepรครคsu modifikaator.
  • Liides ei saa sisaldada andmevรคlju, samas kui abstraktsel klassil vรตib olla andmevรคlju.
  • Liidesed aitavad mรครคratleda klassi perifeerseid vรตimeid, samas kui abstraktne klass mรครคratleb klassi identiteedi.

Liides vs abstraktne klass Java

Mis on abstraktne klass?

Klassi, mille deklaratsioonis on abstraktne mรคrksรตna, nimetatakse abstraktseks klassiks. Abstraktsetes klassides peaks olema null vรตi rohkem abstraktseid meetodeid. st meetodid ilma kehata. Sellel vรตib olla mitu konkreetset meetodit. Abstraktsed klassid vรตimaldavad teil luua konkreetsete klasside kavandeid. Kuid pรคrimisklass peaks rakendama abstraktset meetodit. Abstraktseid klasse ei saa instantseerida.

Liideste kasutamise olulised pรตhjused

  • Selle saavutamiseks kasutatakse liideseid abstraktsioon.
  • Mรตeldud dรผnaamilise meetodi eraldusvรตime toetamiseks kรคitusajal
  • See aitab teil saavutada lahtise haake.
  • Vรตimaldab eraldada meetodi mรครคratluse pรคrimishierarhiast

Abstraktse klassi kasutamise olulised pรตhjused

  • Abstraktsed klassid pakuvad alamklasside jaoks vaikefunktsioone.
  • Pakub malli tulevaste konkreetsete klasside jaoks
  • Aitab mรครคratleda selle alamklassidele รผhise liidese
  • Abstraktne klass vรตimaldab koodi korduvkasutamist.

Mis on liides?

Liides on kavand, mida saab kasutada klassi realiseerimiseks. Liides ei sisalda konkreetseid meetodeid (meetodid, millel on kood). Kรตik liidese meetodid on abstraktsed meetodid. Liidest ei saa instantseerida. Liideseid rakendavaid klasse saab aga instantseerida. Liidesed ei sisalda kunagi eksemplari muutujaid, kuid need vรตivad sisaldada avalikke staatilisi lรตppmuutujaid (st konstantseid klassi muutujaid)

Erinevus liidese ja abstraktse klassi vahel Java

Abstraktne klass vรตimaldab teil luua funktsioone, mida alamklassid saavad rakendada vรตi alistada, samas kui liides vรตimaldab teil funktsionaalsust ainult mรครคrata, kuid mitte seda rakendada. Klass saab laiendada ainult รผhte abstraktset klassi, samas kui klass saab rakendada mitut liidest.

parameetrid Interface 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 Iseseisvuse vรคltimiseks
Pรคrimine/ rakendamine Klass vรตib rakendada mitut liidest Klass saab pรคrida ainult รผhe abstraktse klassi
Vaikerakendus Liidesesse uut kraami lisades on รตudusunenรคgu kรตigi juurutajate leidmine ja รคsja mรครคratletud kraami juurutamine. Abstract Classi puhul saate kasutada vaikerakendust.
Juurdepรครคsu modifikaatorid Liidesel pole juurdepรครคsu modifikaatoreid. Kรตik liideses mรครคratletud on avalikud modifikaatorid. Abstract Class vรตib omada juurdepรครคsu modifikaatorit.
Millal kasutada Parem on kasutada liidest, kui erinevad rakendused jagavad ainult meetodi allkirja. Vรครคrtustรผรผpide polรผmorfne hierarhia. Seda tuleks kasutada siis, kui erinevatel sama tรผรผpi rakendustel on รผhine kรคitumine.
Andmevรคljad liides ei saa sisaldada andmevรคlju. klassis vรตivad olla andmevรคljad.
Mitme pรคrimise vaikeseade Klass vรตib rakendada mitmeid liideseid. Klass pรคrib ainult รผhe abstraktse klassi.
Tรคitmine Liides on abstraktne, nii et see ei saa anda koodi. Abstraktne klass vรตib anda tรคieliku vaikekoodi, mis tuleks tรผhistada.
Accessi modifikaatorite kasutamine Meetodi, atribuutide jms jaoks ei saa kasutada juurdepรครคsu muutjaid. Vรตite kasutada abstraktset klassi, mis sisaldab juurdepรครคsu muutjaid.
Kasutus 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รคlju kui ka konstante
Pรคrisosa Liides vรตib pรคrida mitu liidest, kuid ei saa pรคrida klassi. Abstraktne klass vรตib pรคrida klassi ja mitu liidest.
Konstruktor vรตi hรคvitajad Liides ei saa deklareerida konstruktoreid ega hรคvitajaid. Abstraktne klass vรตib deklareerida konstruktoreid ja hรคvitajaid.
Laienduste limiit See vรตib laiendada mis tahes arvu liideseid. See vรตib korraga laiendada ainult รผhte klassi vรตi รผhte abstraktset klassi.
Abstraktne mรคrksรตna Abstraktse liidese mรคrksรตna puhul on meetodi abstraktseks deklareerimiseks valikuline. Abstraktses klassis on abstraktne mรคrksรตna meetodi abstraktseks kuulutamiseks kohustuslik.
Klassi tรผรผp Liidesel vรตivad olla ainult avalikud abstraktsed meetodid. Abstraktsel klassil on kaitstud ja avalikud abstraktsed meetodid.

Liidese ja abstraktse klassi nรคidiskood Java

Jรคrgmine on nรคidiskood liidese ja abstraktse klassi loomiseks Java

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();
    }
}

Abstraktse klassi sรผntaks

abstract class name{
    // code
}

Abstraktse 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 " + (b * b));
    }
}

Vรตta see postitus kokku jรคrgmiselt: