La classe astratta in Java è simile all’interfaccia, tranne che può contenere un’implementazione di metodo predefinita. Una classe astratta può avere un metodo astratto senza corpo e può avere anche metodi con implementazione. La parola chiave abstract
viene utilizzata per creare una classe e un metodo astratti. La classe astratta in Java non può essere istanziata. Viene utilizzata principalmente per fornire una base affinché le sottoclassi possano estendere e implementare i metodi astratti e sovrascrivere o utilizzare i metodi implementati nella classe astratta.
Classe Astratta in Java
Ecco un semplice esempio di una Classe Astratta in Java.
package com.journaldev.design;
//classe astratta
public abstract class Person {
private String name;
private String gender;
public Person(String nm, String gen){
this.name=nm;
this.gender=gen;
}
//metodo astratto
public abstract void work();
@Override
public String toString(){
return "Name="+this.name+"::Gender="+this.gender;
}
public void changeName(String newName) {
this.name = newName;
}
}
Nota che work()
è un metodo astratto e non ha un corpo. Ecco un esempio di classe concreta che estende una classe astratta in Java.
package com.journaldev.design;
public class Employee extends Person {
private int empId;
public Employee(String nm, String gen, int id) {
super(nm, gen);
this.empId=id;
}
@Override
public void work() {
if(empId == 0){
System.out.println("Not working");
}else{
System.out.println("Working as employee!!");
}
}
public static void main(String args[]){
//codifica in termini di classi astratte
Person student = new Employee("Dove","Female",0);
Person employee = new Employee("Pankaj","Male",123);
student.work();
employee.work();
//uso del metodo implementato nella classe astratta - ereditarietà
employee.changeName("Pankaj Kumar");
System.out.println(employee.toString());
}
}
Si noti che la sottoclasse Employee eredita le proprietà e i metodi della superclasse Person utilizzando l’ereditarietà in Java. Si noti anche l’uso dell’annotazione Override nella classe Employee. Leggi di più su perché dovremmo sempre utilizzare l’annotazione Override quando sovrascriviamo un metodo.
Punti importanti della classe astratta in Java
- La parola chiave
abstract
viene utilizzata per creare una classe astratta in Java. - Una classe astratta in Java non può essere istanziata.
- Possiamo utilizzare la parola chiave
abstract
per creare un metodo astratto, un metodo astratto non ha corpo. - Se una classe ha metodi astratti, allora la classe dovrebbe essere anche astratta utilizzando la parola chiave abstract, altrimenti non verrà compilata.
- Non è necessario che una classe astratta abbia un metodo astratto. Possiamo contrassegnare una classe come astratta anche se non dichiara alcun metodo astratto.
- Se la classe astratta non ha alcuna implementazione del metodo, è meglio utilizzare un’interfaccia perché Java non supporta l’ereditarietà multipla di classi.
- La sottoclasse di una classe astratta in Java deve implementare tutti i metodi astratti a meno che la sottoclasse non sia anche una classe astratta.
- Tutti i metodi in un’interfaccia sono implicitamente astratti a meno che i metodi dell’interfaccia siano statici o predefiniti. I metodi statici e i metodi predefiniti nelle interfacce sono stati aggiunti in Java 8, per ulteriori dettagli leggi Modifiche all’interfaccia Java 8.
- Una classe astratta Java può implementare interfacce senza nemmeno fornire l’implementazione dei metodi dell’interfaccia.
- La classe astratta Java viene utilizzata per fornire un’implementazione comune ai metodi a tutte le sottoclassi o per fornire un’implementazione predefinita.
- Possiamo eseguire una classe astratta in Java come qualsiasi altra classe se ha il metodo
main()
.
Questo è tutto per una classe astratta in Java. Se ho perso qualcosa di importante, per favore fatemelo sapere tramite commenti.
Source:
https://www.digitalocean.com/community/tutorials/abstract-class-in-java