AP CS 시험을 위해 공부하고 있으며 내 책의 OOP 섹션에서이 연습 문제를 발견했습니다. 다음 두 클래스가 제공됩니다.OOP AP CS Practice
package chap4q9;
public class Person
{
private int age;
public Person(int a)
{
age = a;
}
public String toString()
{
return "Age: " + age + "\n";
}
}
package chap4q9;
public class Student extends Person
{
private double gpa;
public Student(int a, double g)
{
super(a);
gpa = g;
}
public String toString()
{
return super.toString() + "GPA: " + gpa; //This was where the missing code was
}
}
그리고 다음은이 두 클래스를 호출하는 클라이언트 프로그램입니다.
package chap4q9;
public class Chap4Q9
{
public static void main(String[] args)
{
Student kathy = new Student(17, 3.85);
System.out.println(kathy);
}
}
마지막으로, 출력은 다음과 같습니다
나이 : 17
GPA : 그냥 경우에 당신이 궁금해 3.85
, 실제로 시대 사이에 선이있을 안된다 그리고 출력물에 GPA가있는 것은 이상한 포맷팅이었습니다.
목표는 두 번째 toString 메서드에서 누락 된 코드를 바꾸는 것이 었습니다 (위 코드에서 누락 된 코드에 대한 정답이 삽입되었지만 위치를 표시했습니다). 나는 그 책이 잘못되었다고 생각했지만 코드를 실행하고 같은 결과를 얻었다. 나는 kathy가 위치한 메모리 위치를 단순히 인쇄 할 것이라고 생각했다. 그리고 그 출력을 얻으려면 kathy.toString()을 인쇄해야 할 것이다. 그러나 kathy를 인쇄하는 것은 Student 클래스에서 toString 메서드를 실행하는 것으로 보입니다. 내 질문은, 왜 학생 개체, 캐시, 그 출력을 받고 단순히 메모리 위치가 아닌 인쇄입니다. 모든 답변을 미리 감사드립니다.
실제로'null' 매개 변수가 주어진 경우''null ''을 출력하는'String.valueOf (...)'를 호출합니다. – Gandalf
+1이 mcfinnigan의 경우 -1입니다. 여기서 우리는 훌륭한 대답과 완전히 쓸모없는 답변의 차이를 봅니다. 좋은 물건 로버트 M. – Brendan