Ereditarietà tramite prototype

di il
1 risposte

Ereditarietà tramite prototype

Ciao a tutti! Credo che non mi sia molto chiaro il concetto di ereditarietà implementata (o forse meglio dire simulata?) tramite prototipi.
Supponiamo di avere le seguenti classi java (esercizio tratto da una traccia di un compito della mia docente):

public Class Employee {
 	public String name;
 	public String dept;
 	public Employee () {
 		this.name = "";
 		this.dept = "general";
 	}
 }
 
public class Manager extends Employee {
 	public Employee[] reports;
 	public Manager() {
 		this.reports = new Employee[0];
 	}
 }

e di volerle "convertire" in javascript utilizzando i prototipi (mi pare di aver capito che ci siano anche altri modi, ma a me interessa esplicitamente utilizzare i prototipi). Da quello che ho capito, lo farei in questo modo:

function Employee(){
	this.name=""
	this.dept="general"
}

function Manager(){
	Manager.prototyope.constructor=Manager
	this.reports=new Employee[0]
}

Manager.prototype=new Employee()
In linea generale è corretto? Come si traduce quel new Employee[0] in javascript? Grazie per l'aiuto

1 Risposte

  • Re: Ereditarietà tramite prototype

    Ciao, ho trovato questo in rete. Può esserti utile?
    
    
    function Person(firstName, lastName) {
        this.FirstName = firstName || "unknown";
        this.LastName = lastName || "unknown";            
    }
    
    Person.prototype.getFullName = function () {
        return this.FirstName + " " + this.LastName;
    }
    function Student(firstName, lastName, schoolName, grade)
    {
        Person.call(this, firstName, lastName);
    
        this.SchoolName = schoolName || "unknown";
        this.Grade = grade || 0;
    }
    //Student.prototype = Person.prototype;
    Student.prototype = new Person();
    Student.prototype.constructor = Student;
    
    var std = new Student("James","Bond", "XYZ", 10);
                
    alert(std.getFullName()); // James Bond
    alert(std instanceof Student); // true
    alert(std instanceof Person); // true
    
    
Devi accedere o registrarti per scrivere nel forum
1 risposte