Estoy realizando una ampliación de una aplicación de clase y me encuentro encallado en el tema de herencia (intentaré explicarme lo mejor posible):
En el ejercicio hay tres clases: Author, Main y Material.
La clase Main no la puedo modificar (normas del enunciado).
Material debe ser la clase heredada de Author.
Realizo la herencia así (adjunto solo una parte de código):
Material.java
Código
public class Material extends Author { /** Maximum number of Authors in any Material */ private static final int MAX_AUTHORS = 3; /** Material Authors */ private Author[] authors; /** Authors number */ private int authorsN; /** Materials Title */ /** * Constructor. * @param title The title of this material */ public Material(String title) { //si lo dejo asi, el compilador me dice que debo hacer modificaciones en la clase Author. Si en vez de (String title) anado (String title, String name) me aparece problema de compilado en la clase main. super(name); //si en vez de name escribo title el programa me compila bien this.title = title; this.authorsN = 0; }
Añado las lineas en que me da error el compilador en la clase main si el constructor fuera Material (String title, String name):
Main.java
Código
Material m1 = new Material("Object Oriented Programming. Java practices"); Material m2 = new Material("UML cases"); Material m3 = new Material("Introduction to Programming"); Material m4 = new Material("Algebra Theory"); Material m5 = new Material("Graph Theory"); }
Y añado lo que debo modificar si dejo:
Código:
public Material(String title) {
super(name);
Author.java
Código
//private String name; original
Qué hago mal? Qué es lo correcto? Espero haberme explicado bien.
Gracias,