내 서브 클래스에서 수퍼 클래스의 메서드를 재정의하려고합니다. 하지만 내 프로그램에 어떤 변화가 있었 든간에. 수퍼 클래스의 메서드에 의해 진행된 결과를 여전히 나타냅니다. 그럼, 제 코드에 뭐가 잘못 됐나요?하위 클래스의 수퍼 클래스의 메서드를 재정의 할 수 없습니다.
getChildAge 메소드 및 getGreeting 메소드를 대체하려고합니다. 재정의 후 실제 값에 2를 더한 값을보고하는 14가 표시됩니다 (12가 설정된 경우). getGreeting 메서드의 경우 "I am the best"가 표시되어야합니다. 어떤 인수가 getGreeting 메소드로 전달되었는지에 관계없이
public class SchoolKid
{
private String childName;
private int childAge;
private String childTeacher;
private String greeting;
//Constructor sets the childName,age,childTeacher and greeting.
public SchoolKid(String childN,int a,String childT,String g)
{
childName = childN;
childAge = a;
childTeacher = childT;
greeting = g;
}
public void setChildName(String childN)
{
childName = childN;
}
public void setChildAge(int a)
{
childAge = a;
}
public void setChildTeacher(String childT)
{
childTeacher = childT;
}
public void setGreeting(String g)
{
greeting = g;
}
public String getChildName()
{
return childName;
}
public int getChildAge()
{
return childAge;
}
public String getChildTeacher()
{
return childTeacher;
}
public String getGreeting()
{
return greeting;
}
}
public class ExaggeratingKid extends SchoolKid
{
private int childAge;
private String greeting;
//Constructor sets the child name,age,childTeacher and greeting.
public ExaggeratingKid(String childNAME,int childAGE,
String childTEACHER,String GREETING)
{
super(childNAME,childAGE,childTEACHER,GREETING);
}
public void setChildAge(int a)
{
childAge = a;
super.setChildAge(childAge+2);
}
public void setGreeting(String g)
{
greeting = "I am the best.";
super.setGreeting("I am the best.");
}
public String toString()
{
String str;
str = "The child's name is "+super.getChildName()+
"\nThe child's age is "+super.getChildAge()+
"\nThe child's teacher is "+super.getChildTeacher()+
"\nThe greeting is: "+super.getGreeting();
return str;
}
}
슈퍼 메서드를 호출하면 어떤 이점이 우선 적용됩니까? toString()에서'super' 메소드를 호출하지 마라! 현재 객체 인'this' 객체의 메소드를 호출하십시오. 또한 인사말 또는 childAge 필드에 자식을 제공하지 마십시오. –
이전에 해봤지만 나이가 0이고 인사말이 null임을 나타냅니다. – zihaow