ChildClass, BaseClass 및 Student라는 세 개의 클래스가 있습니다. ChildClass는 BaseClass를 확장합니다. My ChildClass는 dipslayName()이라는 메서드를 상속받습니다.이 메서드는 학생의 이름을 출력하지만 null 값을 제공합니다. ChildClass에서 학생 객체에 주석을 달면 잘 동작합니다.상속받은 메서드가 null 값을 제공합니다
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");
}
}
이 다른 클래스 :
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");
}
}
이 다른 클래스입니다 : 당신의 ChildClass
내
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;
}
}
당신은 두 개의 서로 다른'student' 필드가 - BaseClass''에서 하나 ChildClass''하나입니다. 나는 당신이 그것을 원하지 않는다고 강력하게 의심합니다. –
** 1 ** 함수를 주석 처리 했으므로 어떻게 작동하는지 어떻게 예상합니까? ** 2 ** void 함수입니다. 그래서 어디에서 null입니까? ** 3 ** 두 함수의 구현은 동일합니다. 그게 뭐야?! – Biffen
'BaseClass'와'ChildClass'에 멤버 변수'student'를 정의했습니다. 이것들은 두 개의 분리 된 변수입니다. – Jesper