L'obiettivo dell'esercizio è creare sotto classi con gerarchia

main
PHP Code:
import people.*;

public class 
test {

    public static 
void main (String [] input_data) {



        
Studente s = new Studente("nome",1960,"math1");
        
Studente s1 = new Studente("nome",1960,"math");



        
System.out.print(((Studente)s).equals(s1));








    }


persona class
PHP Code:
package people;
/**
 * Created with xgiovio.macbookair.
 * User: xgiovio
 * Date: 20/11/13
 * Time: 14:18
 */
public class Persona implements Cloneable{


    public  
Persona (String in_nameint in_anno){
        
name in_name;
        
anno_di_nascita in_anno;

    }


    @
Override
    
public boolean equals(Object obj) {
        if (
obj == null)
            return 
false;
        if (
obj.getClass() == this.getClass()){
                    if (
name.equals(((Persona)obj).getName())
                        && 
anno_di_nascita == ((Persona)obj).getAnno_di_nascita()
                        ){
                        return 
true;
                    }else{
                        return 
false;
                    }

        }else{
            return 
false;
        }
    }

    public 
void setName(String name) {
        
this.name name;
    }

    public 
void setAnno_di_nascita(int anno_di_nascita) {
        
this.anno_di_nascita anno_di_nascita;
    }



    @
Override
    
public Object clone() throws CloneNotSupportedException {

        return (
Persona)super.clone();

    }

    @
Override
    
public String toString() {

        return (
getClass().getName());

    }



    public 
int getAnno_di_nascita() {
        return 
anno_di_nascita;
    }

    public 
String getName() {
        return 
name;
    }

    private 
String name;
    private 
int anno_di_nascita;


studente class

PHP Code:
package people;

/**
 * Created with xgiovio.macbookair.
 * User: xgiovio
 * Date: 20/11/13
 * Time: 14:30
 */
public class Studente extends Persona {

      public 
Studente (String in_nameint in_annoString in_corso_di_studi){
          
super(in_namein_anno);
          
corso_di_studi in_corso_di_studi;
      }


    public 
boolean equals(Object obj) {
            if (    
super.equals((Persona)obj) &&
                     
corso_di_studi.equals(((Studente)obj).getCorso_di_studi())
                    ){
                return 
true;
            }else{
                return 
false;
            }

    }


    public 
Object clone() throws CloneNotSupportedException{
                      
Studente temp = (Studente)(super.clone());

            return 
temp;
        }

    public 
String toString() {

        return (
super.toString());

    }


    public 
String getCorso_di_studi() {
        return 
corso_di_studi;
    }


    public 
void setCorso_di_studi(String corso_di_studi) {
        
this.corso_di_studi corso_di_studi;
    }

    private 
String corso_di_studi;