2016-11-05 1 views
0

Donc, ce n'est pas une tâche, mais une de mes diapositives n'a pas été claire et quand j'essaie de coder moi-même quelque chose de similaire, je rencontre un problème.Java: Comment remplir une variable dans une sous-classe?

Je ne peux pas comprendre comment remplir une variable qui est dans ma sous-classe.

voici mon code de test jusqu'ici:

classe de mise en œuvre:

import javax.swing.JOptionPane; 

public class Maison {

/** 
* @param args the command line arguments 
*/ 
public static void main(String[] args) { 
    int count = 0; 
    room[] r = new room[3]; 
    int option = JOptionPane.showConfirmDialog(null, "type"); 
    if(option==0){ 
     r[count]=new type(); 
     r[count].setSize(25); 
     r[count].setType("Bedroom"); 
    } 
    else if(option==1){ 
     r[count] = new room(); 
     r[count].setSize(25); 
    } 

    JOptionPane.showMessageDialog(null, r[count].toString()); 
} 

}

superclasse:

public class room { 
double size; 

public room(){ 

} 

public room(double size){ 
    this.size=size; 
} 

public double getSize(){return this.size;} 

public boolean setSize(double size){ 
    if(size<0.0){ 
     return false; 
    } 
    else{ 
     return true; 
    } 
} 
public String toString(){ 
    return "Room size: " + this.size; 
} 

}

Sous-classe:

public class type extends room { 
String type; 

public type(){ 

} 

public type (double size, String type){ 
    super(size); 
    this.type=type; 
} 

public String getType(){return this.type;} 

public boolean setType (String type){ 
    if(type.equals("")){ 
     return false; 
    } 
    else{ 
     return true; 
    } 
} 

public String toString(){ 
    return super.toString() + "Room Type: " + this.getType(); 
} 

}

lorsque je tente d'exécuter le code, si j'essayé d'insérer des données dans setType() dans la classe de type, il me donnerait une erreur. Quelqu'un peut-il me dire où je me trompe? Merci!

Répondre

1

Rappelez-vous le pointeur d'origine:

if(option==0){ 
    type t = new type(); 
    t.setSize(25); 
    t.setType("Bedroom"); 
    r[count]= t; 
} 

Sinon, vous pouvez lancer le type d'origine:

((type) r[count]).setType("Bedroom");