RISOLTO Esercizio in java

Stato
Discussione chiusa ad ulteriori risposte.

sare1234

Utente Attivo
262
3
Buongiorno devo fare questo esercizio ma ho dei dubbi:
Schermata 2021-06-26 alle 08.40.09.png
Il primo punto ho risolto inserendo
Java:
public static void foo(B b){
     ............
}

public static void foo(C c){
     ............
}

public static void foo(A a){
     ............
}

il secondo dopo le modifiche:
Java:
B
A
C
il terzo ho pensato di inserire in:
Java:
public static void foo(B b){
System.out.println("B");
System.out.println("C");
System.out.println("A");
}
 
Ultima modifica da un moderatore:

Andretti60

Utente Èlite
6,440
5,091
1) cosa hai messo nel corpo del metodo foo(A a) ?
2) se non hai cambiato il main(), quello non è l’output
3) rileggi bene la domanda, il metodo foo() deve stampare la stringa “foo” quando..

Devi anche guardare il riquadro a destra, ossia sia B che C estendono A, quindi…
 

sare1234

Utente Attivo
262
3
1) cosa hai messo nel corpo del metodo foo(A a) ?
2) se non hai cambiato il main(), quello non è l’output
3) rileggi bene la domanda, il metodo foo() deve stampare la stringa “foo” quando..

Devi anche guardare il riquadro a destra, ossia sia B che C estendono A, quindi…
  1. nel metodo foo( A a) ho inserito System.out.println("A");
  2. il main non l'ho cambiato pero se aggiungo foo(A a) e static ai metodi in output ottengo B A C
  3. posso farlo così tipo:
  4. Java:
    public class Es4 {
       
        public static void main(String[] args) {
            try {
                foo(new A());
            }
            catch(Exception e) {
                System.out.println("Error!");
            }
        }
       
        public static  void foo(A a) {
            System.out.println("foo");
        }
    }
 
Ultima modifica:

BAT

Moderatore
Staff Forum
Utente Èlite
22,948
11,581
CPU
1-Neurone
Dissipatore
Ventaglio
RAM
Scarsa
Net
Segnali di fumo
OS
Windows 10000 BUG
Ma non ti basta cambiare i metodi statici per A e B in modo che stampi "foo"?
 

BAT

Moderatore
Staff Forum
Utente Èlite
22,948
11,581
CPU
1-Neurone
Dissipatore
Ventaglio
RAM
Scarsa
Net
Segnali di fumo
OS
Windows 10000 BUG
No in quel modo stampi una "f" su una riga quando il paramtro è la classe A, e "oo" quando il parametro è la classe B;
io intendo così:
Java:
    public static void foo(B b) {
        System.out.println("foo");
    }
 
    public static void foo(C c) {
        System.out.println("C");
    }
 
    public static void foo(A a) {
        System.out.println("foo");
    }
oppure sfruttando l'operatore instanceof in questo modo:
Java:
    public static void foo(C c) {
        System.out.println("C");
    }
 
    public static void foo(Object o) {
        if(o instanceof A || o instanceof B)
            System.out.println("foo");
    }
in tal caso non bisogna definire un metodo specifico per oggetti di classe A o B
 
Stato
Discussione chiusa ad ulteriori risposte.

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili