La parola chiave this
Fa parte della sezione Programmazione orientata agli oggetti del percorso Java di Coddy. Lezione 4 di 87.
La parola chiave this si riferisce all’istanza corrente di una classe. Distingue tra campi e parametri con lo stesso nome.
Senza this, il parametro nasconde il campo
public class Person {
private String name;
public Person(String name) {
name = name; // Assegna il parametro a sé stesso!
}
}Usare this per assegnare correttamente i valori
public class Person {
private String name;
public Person(String name) {
this.name = name; // Assegna il parametro al campo
}
public String getName() {
return this.name;
}
}Usare this nei metodi
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getDescription() {
return this.name + " is " + this.age + " years old";
}
}La parola chiave this punta sempre all’oggetto corrente. È fondamentale quando i nomi dei parametri corrispondono ai nomi dei campi, evitando confusione e bug.
Sfida
MedioCompleta la classe Person usando la parola chiave this per distinguere i campi dai parametri:
- Un costruttore che usa
thisper assegnare i parametri ai campi - Metodi getter che usano
thisper accedere ai campi - Un metodo
getDescription()che restituisce"<name>, age <age>, from <city>"
Provalo tu
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine();
int age = Integer.parseInt(scanner.nextLine());
String city = scanner.nextLine();
Person person = new Person(name, age, city);
System.out.println("Name: " + person.getName());
System.out.println("Age: " + person.getAge());
System.out.println("City: " + person.getCity());
System.out.println(person.getDescription());
}
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Programmazione orientata agli oggetti
1Fondamenti della programmazione a oggetti
File esterniIntroduzione alla programmazione a oggettiClassi e oggettiLa parola chiave thisMetodiCampi (attributi)Metodo costruttoreSovraccarico dei costruttoriRipasso - Calcolatrice semplice4Ereditarietà
Ereditarietà di base (extends)La parola chiave superSovrascrittura dei metodi (@Override)Concatenamento dei costruttoriLa classe ObjectEreditarietà singola e multilivelloPerché non esiste l'ereditarietà multipla delle classiRiepilogo: gerarchia dei dipendenti7Metodi speciali e classe Object
Metodo toString()equals() e hashCode()Metodo clone()compareTo() e ComparableInterfaccia ComparatorRiepilogo - Ordinamento personalizzato2Modificatori di accesso e incapsulamento
Panoramica dei livelli di accessoMetodi getter e setterNascondimento delle informazioniLa parola chiave finalRiepilogo - Gestore di conti bancari5Polimorfismo
Nozioni di base sull'overloading dei metodiOverride dei metodi (a runtime)Upcasting e downcastingL'operatore instanceofClassi e metodi astrattiRiepilogo - Calcolatore di forme8Concetti avanzati di OOP
Composizione vs ereditarietàAggregazione vs composizioneClassi interne, annidate e anonimeEnum e metodi degli EnumRecord (Java 16+)Classi sealed (Java 17+)11Modelli di progettazione Parte 1
Introduzione ai modelli di progettazionePattern SingletonPattern FactoryPattern BuilderPattern ObserverPattern Strategy3Proprietà di classe e membri statici
Variabili di istanza e staticheMetodi staticiBlocchi staticiCostanti (static final)Riepilogo - Contatore e utility6Interfacce e classi astratte
Introduzione alle interfacceImplementazione delle interfacceImplementazione di più interfacceMetodi default e static nelle interfacceClassi astratte e interfacce a confrontoInterfacce funzionaliRiepilogo: sistema di pagamento9Tipi generici
Introduzione ai tipi genericiClassi genericheMetodi genericiParametri di tipo con limitiCaratteri jolly (?, extends, super)Riepilogo - Contenitore generico12Modelli di progettazione – Parte 2
Pattern CommandPattern AdapterPattern DecoratorPattern Template MethodPattern StatePattern CompositePattern IteratorEsercitati da solo: Compilatore Java online