--------------------------------------- class Persona { protected String nome; protected String cognome; protected Data nascita; public void setNome(String nome) { ... } public String getNome() { ... } public void setNascita( ... ) { ... } public int eta() { ... } public String toString() { ... } ... } class Studente extends Persona { protected int matricola; public int getMatricola() { ... } public void setMatricola( ... ) { ... } ... } --------------------------------------- ... Persona p1 = new Persona( ... ); Studente p2 = new Studente( ... ); ... p1.setNome("Gino"); p2.setNome("Pasquale"); p2.setNascita( ... ); ... System.out.println(p1.getNome()); System.out.println(p2.eta()); ... --------------------------------------- class A { private int x; public int getX() {return x;} } class B extends A { } --------------------------------------- class B extends A { public void m() { System.out.println(x); } } --------------------------------------- class B extends A { public void m() { System.out.println(getX()); } } --------------------------------------- class Studente extends Persona { protected int matricola; ... public String toString() { return ... // COPIO quello che c'e' in toString di Persone + matricola; // e poi aggiungo la matricola } ... } --------------------------------------- class Studente extends Persona { protected int matricola; ... public String toString() { return super.toString() //chiamo il toString di Persone + matricola; // e poi aggiungo la matricola } ... } --------------------------------------- class A { protected int x; protected void m() {...} } class B extends A { protected int x; protected void m() {...} } --------------------------------------- public B() { super(); ...; } --------------------------------------- B b = new B(); --------------------------------------- class A { public m1() { ... } public m2() { ... } public m2(.) { ... } public m3() { ... } } class B extends A { public m1() { ... } public m3(.) { ... } } --------------------------------------- class EssereVivente { protected int eta; public int getEta() { return eta; } public void setEta(int x) { eta = x; } public String toString () { return "ESSERE VIVENTE \nEta': " + getEta(); } } class Animale extends EssereVivente { protected String nome; public String getNome() { return nome; } public void setNome(String n) { nome = n; } public String toString () { return ("ANIMALE\n" + "Nome: " + getNome() + "\n" + super.toString()); } } class Persona extends EssereVivente { protected String cognome; protected String nome; public String getCognome() { return cognome; } public String getNome() { return nome; } public void setCognome(String c) { cognome = c; } public void setNome(String n) { nome = n; } public String toString () { return ("PERSONA\n" + "Cognome: " + getCognome() + "\n" + "Nome: " + getNome() + "\n" + super.toString()); } } class Lavoratore extends Persona { protected String lavoro; protected int stipendio; public int getStipendio() {return stipendio;} public String getLavoro() {return lavoro;} public void setStipendio(int s) {stipendio = s;} public void setLavoro(String s) {lavoro = s;} public String toString () { return ("LAVORATORE\n" + "Lavoro: " + getLavoro() + "\n" + "Stipendio: " + getStipendio()) + "\n" + super.toString(); } } class Studente extends Persona { protected int matricola; public void setMatricola(int m) { matricola = m; } public int getMatricola() { return matricola; } public String toString () { return ("STUDENTE" + "\n" + "Matricola: " + getMatricola()) + "\n" + super.toString(); } } --------------------------------------- class Prova { public static void main (String[] args) { Persona p1 = new Persona(); p1.setNome("Stefano"); p1.setCognome("Mizzaro"); System.out.println(p1 + "\n"); Animale a1 = new Animale(); a1.setEta(3); a1.setNome("Blu"); System.out.println(a1 + "\n"); Studente s1 = new Studente(); s1.setNome("Mario"); s1.setCognome("Bianchi"); s1.setMatricola(123); System.out.println(s1 + "\n"); Lavoratore l1 = new Lavoratore(); l1.setNome("Mario"); l1.setCognome("Rossi"); l1.setLavoro("Docente"); l1.setStipendio(10000000); System.out.println(l1 + "\n"); } } --------------------------------------- >java Prova PERSONA Cognome: Mizzaro Nome: Stefano ESSERE VIVENTE Eta': 0 ANIMALE Nome: Blu ESSERE VIVENTE Eta': 3 STUDENTE Matricola: 123 PERSONA Cognome: Bianchi Nome: Mario ESSERE VIVENTE Eta': 0 LAVORATORE Lavoro: Docente Stipendio: 10000000 PERSONA Cognome: Rossi Nome: Mario ESSERE VIVENTE Eta': 0 --------------------------------------- class A { protected void m(){ System.out.println("A"); } } class B extends A { protected void m(){ System.out.println("B"); } } --------------------------------------- class P { public static void main (String[] args) { A a = new A(); B b = new B(); a.m(); b.m(); a = b; a.m(); } } --------------------------------------- >java P A B B --------------------------------------- class P1 { public static void main (String args[]) { A a = new B(); a.m(); } } --------------------------------------- class Figura { } class Punto extends Figura { ... // tutto come prima } class Cerchio extends Figura { ... // tutto come prima } class Quadrato extends Figura { ... // tutto come prima } class ProvaFigura { public static void main (String[] args) { Figura[] f = new Figura[3]; f[0] = new Punto(1,1); f[1] = new Cerchio(1,2,3); f[2] = new Quadrato(3,0,2,1); for (int i = 0; i < 3; i++) System.out.println(f[i]); } } --------------------------------------- >java ProvaFigura (1.0, 1.0) cerchio: centro (1.0, 2.0) raggio 3.0 quadrato: alto Sx (3.0, 0.0) basso Dx (2.0, 1.0) --------------------------------------- f[0].setX(2); --------------------------------------- ProvaFigura.java:12: Method setX(int) not found in class Figura. f[0].setX(2); ^ 1 error --------------------------------------- ((Punto) f[0]).setX(2); --------------------------------------- ((Punto) f[1]).setX(2); --------------------------------------- java.lang.ClassCastException: Cerchio at ProvaFigura.main(Compiled Code) --------------------------------------- class P { public static void main (String[] args) { A a = new A(); B b = new B(); a.m(); b.m(); b = a; b.m(); } } --------------------------------------- P.java:7: Incompatible type for =. Explicit cast needed to convert A to B. b = a; --------------------------------------- class P { public static void main (String[] args) { A a = new A(); B b = new B(); a.m(); b.m(); b = (B) a; b.m(); } } --------------------------------------- >java P A B java.lang.ClassCastException: A at P.main(P.java:7) --------------------------------------- ((Punto) f[0]).setX(2); --------------------------------------- f[0] = new Punto(1,1);