Input/Output e Stream in Java
Alex Liu
Software Development Engineer
Animal rappresenta un animale genericoclass Animal {
void makeSound() {
System.out.println("Animal sound");
}
public static void main(String[] args) {
Animal a = new Animal();
a.makeSound(); // Output: Animal sound
}
}
Animal sound
// Usa `extends` per creare una sottoclasse di `Animal` chiamata `Dog`
class Dog extends Animal {
void bark() {System.out.println("Bark");}
}
public static void main(String[] args) {
Dog d = new Dog(); // Crea una nuova istanza di Dog che estende Animal
d.makeSound();
d.bark();
}
Animal sound
Bark
class Cat extends Animal {
@Override // Usa `@Override` per sovrascrivere il comportamento di `.makeSound()`
void makeSound() {
System.out.println("Meow");
}
}
public static void main(String[] args) {
Cat c = new Cat(); // Crea una nuova istanza di Cat che estende Animal
c.makeSound(); // Chiama il metodo sovrascritto `makeSound()`
}
Meow
public class RecursionExample {
static void countdown(int n) {
// Caso base
if (n == 0) return;
System.out.println(n);
// Chiamata ricorsiva
countdown(n - 1);
}
}
public static void main(String[] args) {
countdown(5);
}
05
4
3
2
1
extends abilita l'ereditarietà
@Override modifica il comportamento ereditato
La ricorsione scompone il problema in passi più piccoli
Input/Output e Stream in Java