classi astratte non hanno metodi del tutto specificati ulteriormente. Sono usati come classi base che sarebbero ulteriormente estese da altre classi che li "ereditano".
Ad esempio, è possibile avere una classe astratta denominata Animale domestico.
public abstract class Pet{
private String name;
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
abstract String makeNoise();
}
che può essere esteso per classi ereditate:
public class Cat extends Pet {
public Cat(){ ... }
...
public String makeNoise(){
return "Meow!";
}
}
...
public class Dog extends Pet {
public Cat(){ ... }
...
public String makeNoise(){
return "Bark!";
}
}
Da lì, si può avere le cose nel codice come ad esempio:
Pet thisPet = new Dog();
...
thisPet = new Cat();
Ed è possibile creare array di animali che prenderebbe sia gatti che cani come elementi accettabili.
Pet petArr[] = new Pet[2];
petArr[0] = new Cat();
petArr[1] = new Dog();
Per ulteriori informazioni, vi consiglio di guardare la sezione Java esercitazione copre classi astratte here.
Perché è possibile inserire tutti i sottotipi di 'Gioco' nell'array, ma una classe astratta non può essere istanziata in quanto è" incompleta ". – Matthias