Ich habe drei Klassen namens ChildClass, BaseClass und Student. ChildClass erweitert BaseClass. Meine ChildClass erbt eine Methode namens DipslayName(), die den Namen des Schülers drucken sollte, aber es gibt mir den Nullwert. Wenn ich das Schülerobjekt in meiner ChildClass kommentiere, funktioniert es gut.Inherited Methode gibt mir den Nullwert
package com.techmahindra;
public class ChildClass extends BaseClass{
Student student = new Student();
public static void main(String[] args) {
ChildClass child = new ChildClass();
child.displayName();
}
/*public void displayName(){
setName();
System.out.println(student.getName());
}*/
public void setName(){
student.setName("Mahesh");
}
}
Das ist die andere Klasse:
package com.techmahindra;
import com.techmahindra.Student;
public class BaseClass {
Student student = new Student();
public void displayName(){
setName();
System.out.println(student.getName());
}
public void setName(){
student.setName("santhosh");
}
}
Das ist die andere Klasse:
package com.techmahindra;
public class Student {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Sie haben zwei verschiedene 'student' Felder - ein in' BaseClass' und ein in 'ChildClass'. Ich vermute stark, dass du das nicht willst. –
** 1 ** Sie haben die Funktion auskommentiert, also wie erwarten Sie, dass es funktioniert? ** 2 ** Es ist eine Void-Funktion, also wo ist es * gib * 'du null? ** 3 ** Beide Implementierungen der Funktion sind identisch. Was ist damit?! – Biffen
Sie haben eine Membervariable 'student' in' BaseClass' sowie in 'ChildClass' definiert. Beachten Sie, dass dies zwei separate Variablen sind. – Jesper