Les classes abstractes i les interfícies són els dos blocs principalsdel . Tot i que tots dos s’utilitzen principalment per a l’abstracció, són molt diferents entre si i no es poden utilitzar indistintament. En aquest article esbrinem quina és la diferència entre la classe abstracta i la interfície a Java.
Els temes tractats en aquest article són els següents:
- Què és una classe abstracta a Java?
- Interfície en Java
- Resum Classe vs Interfície
- Quan s'utilitza la classe abstracta i quan s'utilitza la interfície?
Comprendre les diferències entre classe abstracta i interfície a , heu de saber què és una classe abstracta i què és una interfície. Comencem doncs, parlant de què són.
transformació activa i passiva en informàtica
Què és la classe abstracta a Java?
En qualsevol llenguatge de programació, abstracció significa ocultar a l'usuari els detalls irrellevants per centrar-se només en els detalls essencials per augmentar l'eficiència, reduint la complexitat. A Java, l'abstracció s'aconsegueix utilitzant classes abstractes . Una classe abstracta capta característiques comunes de subclasses i pot contenir o no cap mètode abstracte. No es pot crear una instància, però només es pot utilitzar com a superclasse per les seves subclases. Aquí teniu un exemple de programa que demostra la classe abstracta:
Nota: An mètode abstracte , és un mètode que no s'implementa al lloc i que s'afegeixincompletesa a classe .
package MyPackage // abstract class abstract class Animal {String AnimalName = '' Animal (nom de la cadena) {this.AnimalName = name} // declara mètodes no abstractes // té implementació predeterminada public void BasicInfo (detalls de la cadena) {System. out.println (this.AnimalName + '' + details)} // mètodes abstractes que seran // implementats per la seva subclasse abstract public void habitat () abstract public void respiration ()} classe Terrestre extends Animal {// constructor Terrestre (nom de la cadena) {super (name)} @Override public void habitat () {System.out.println ('leave on land and')} @Override public void respiration () {System.out.println ('respire a través de pulmons o tràquea. ')}} classe Aquatic extends Animal {// constructor Aquatic (nom de la cadena) {super (name)} @Override public void habitat () {System.out.println (' Es deixa a l'aigua i ') } @Override public void respiration () {System.out.println ('respire through brànquies o la seva pell.')}} Classe AbstractClassDemo {public static voi d main (String [] args) {// creant l’objecte de la classe Terrestre // i utilitzant la referència de la classe Animal. Animal object1 = new Terrestrial ('Humans') object1.BasicInfo ('són éssers terrestres, ells') object1.habitat () object1.respiration () System.out.println ('') // creant els objectes de la classe de cercle Animal object2 = new Aquatic ('Peixos') object2.BasicInfo ('són éssers aquàtics, ells') object2.habitat () object2.respiration ()}}
Sortida
Els humans som éssers terrestres, surten a la terra i respiren per pulmons o tràquea. Els peixos són éssers aquàtics, deixen a l’aigua i respiren per brànquies o per la seva pell.
El Informació bàsica () és un mètode compartit per Terrestre i Aquàtic classes. Des de Classe animal no es pot iniciar, estem creant els objectes de Terrestre i Aquàtic classes amb finalitats de programació. A continuació, tenim interfícies.
Interfície en Java
Una altra forma d'aconseguir abstracció a Java es fa mitjançant interfícies .Una interfície és una col·lecció de mètodes abstractes, que no té cap concret , a diferència d’una classe abstracta. Però, a diferència de la classe abstracta, una interfície proporciona una abstracció completa a Java. Pot tenir tant mètodes com variables com una classe. No obstant això, els mètodes declarats en una interfície són abstractes per defecte.Aquí hi ha un demostrant classe abstracta:
package Interfície MyPackage Animals {// mètodes abstractes void habitat () void respiration ()} classe TerrestrialA implementa Animals {String AnimalName = '' // constructor TerrestrialA (nom de la cadena) {this.AnimalName = name} @Override public void habitat () {System.out.println (this.AnimalName + 'leave on land and')} @Override respiració del buit públic () {System.out.println ('respira a través de pulmons o tràquea.')}} Classe AquaticA implementa Animals {String AnimalName = '' // constructor AquaticA (nom de la cadena) {this.AnimalName = name} @Override public void habitat () {System.out.println (this.AnimalName + 'leave in water and')} @Override public void respiration () {System.out.println ('respire through brànquies o la seva pell.')}} Classe JavaInterfaceDemo {public static void main (String [] args) {// creant l'objecte de la classe terrestre // i utilitzant la referència de classe Animal . Animals object1 = new TerrestrialA ('Humans') object1.habitat () object1.respiration () System.out.println ('') // creant els objectes de la classe del cercle Animals object2 = new AquaticA ('Fishes') object2.habitat () object2.respiration ()}}
Sortida
Els humans marxen a terra i respiren per pulmons o tràquea. Els peixos surten a l’aigua i respiren per brànquies o per la seva pell.
Si no teniu cap codi comú entre el vostre classes , llavors podeu anar a la interfície. Una interfície s’assembla més a un pla d’una classe ja que no té cap mètode no abstracte.
Pel contingut anterior, és possible que hagueu notat la diferència clau entre la classe abstracta i la interfície a . La qual cosa, a diferència de la classe abstracta, proporciona una interfície completa abstracció a Java. Ara anem endavant i enumerem altres diferències.
Resum Classe vs Interfície
La taula següent mostra les diferències clau entre la classe abstracta i la interfície.
Paràmetre | Classe de Resum | Interfície |
Implementació del mètode per defecte | Pot tenir la implementació del mètode per defecte | Les interfícies proporcionen una abstracció pura i no poden tenir cap implementació |
variables | Pot contenir variables no finals. | Les variables declarades en una interfície són per defecte finals quins són els casos a Java |
Paraula clau utilitzada | Es pot ampliar una classe abstracta mitjançant la paraula clau “extends | La interfície s'ha d'implementar mitjançant implementacions de paraules clau |
Modificadors d'accés | Llaunatenen modificador públic, protegit, privat i predeterminat | Els mètodes d'interfície són públics per defecte. no podeu utilitzar cap altre modificador d'accés amb ell |
Velocitat d'implementació | És més ràpid que la interfície | Una interfície és una mica més lenta i requereix una indirecta addicional |
Classe normal | Només pot ampliar una classe abstracta c vs c ++ vs java | Pot implementar diverses interfícies |
Constructors | Una classe abstracta pot tenir constructors | Una interfície no pot tenir constructors |
Herència múltiple | Una classe abstracta pot ampliar una altra classe i pot implementar diverses interfícies Java | La interfície només pot ampliar una altra interfície Java |
Bé, ara teniu les diferències clau entre la classe abstracta i la interfície a Java. Però, com decidiu quan feu servir quin d'entre aquests dos?
Quan s'utilitza la classe abstracta i quan s'utilitza la interfície?
Penseu a utilitzar classes abstractes en els casos següents:
- Si teniu algunes classes relacionades que han de compartir el fitxer mateixes línies de codi
- Quan vulgueu definir el fitxer camps no estàtics o no finals
- Quan n’hi hamètodes o campso requereixen modificadors d’accés que no sigui públic (com ara protegit i privat)
Penseu a utilitzar interfícies en els casos següents:
- Quan es vol aconseguir pura abstracció
- Si vols contractar múltiple , és a dir,implementar més d’una interfície
- Quan vulgueu especificar el comportament d'un tipus de dades concret, però no us preocupa qui implementa el seu comportament.
Això ens porta al final d’aquest article. He tractat una de les preguntes més freqüents sobre Java a Entrevista, que és la diferència entre la classe abstracta i la interfície de Java.
Assegureu-vos de practicar el màxim possible i de recuperar la vostra experiència.
Consulteu el per Edureka, una empresa d'aprenentatge en línia de confiança amb una xarxa de més de 250.000 estudiants satisfets repartits per tot el món. Estem aquí per ajudar-vos en cada pas del vostre viatge, per convertir-vos en una pregunta a part d’aquestes entrevistes java, oferim un pla d’estudis dissenyat per a estudiants i professionals que vulguin ser desenvolupador de Java.
Tens alguna pregunta? Si us plau, mencioneu-lo a la secció de comentaris d'aquesta 'interfície de mapa java' article i ens posarem en contacte amb vostè el més aviat possible.