오늘 있었던 객체지향 프로그래밍 퀴즈 중 틀린 문제를 자세히 분석해보려한다.
총 13문제 중 10문제를 맞추고 3문제를 틀렸는데,
틀린 3문제 중 2문제는 내가 풀었던게 정답은 맞았지만 클릭실수인건지 답이 체크되지 않아서 틀린것으로 간주되었다.
틀린건 틀린거니 3문제 모두 리뷰해보자.
<다음 중 객체에 대해 틀린 것을 고르세요.>
A.참조변수의 타입은 기본적으로 인스턴스의 타입과 일치해야 한다.
B.특정 인스턴스를 참조변수에 할당하면 해당 참조변수에는 할당한 인스턴스의 주소값이 저장된다.
C.객체의 속성과 기능은 각각 필드와 메서드로 표현된다.
D.같은 클래스로부터 생성된 객체는 반드시 같은 속성값을 가져야 한다.
(리뷰){
D - 같은 클래스로부터 생성되었더라도 인스턴스 변수를 통해 해당 객체만의 고유한 특성을 정의할 수 있다.}
<다음의 코드 예제는 Cat 클래스를 정의하고, 생성하여 사용하는 과정을 보여줍니다. 다음 보기 중 틀린 것을 고르세요.>
public class CatTest {
public static void main(String[] args) {
Cat lucky = new Cat();
lucky.name = "러키";
lucky.color = "고등어";
lucky.age = 4;
Cat haku = new Cat();
haku.name = "하쿠";
haku.color = "그레이";
haku.age = 4;
haku.eat();
lucky.eat();
lucky.cry();
}
}
class Cat {
String name;
String color;
int age;
void sleep() {
System.out.println("쿨쿨💤")
}
void eat() {
System.out.println("냠냠🍚")
}
void cry() {
System.out.println("야옹야옹😺")
}
}
(리뷰){
C - 동일한 클래스로부터 생성된 객체의 메서드는 메모리 구조의 클래스 영역에 선언되어 같은 메서드를 공유한다.
따라서 각각의 인스턴스(Cat lucky, Cat haku)가 같은 메서드 주소 값(class Cat)을 가리키고 있기 때문에 위 예제의 eat() 메서드는 동일한 결과를 출력한다.}
<다음 코드 예제의 출력값으로 알맞은 것을 고르세요.>
public class CozStudentsTest {
public static void main(String[] args) {
CozStudents cozStudents = new CozStudents();
cozStudents.averageAge = 29;
System.out.println("코드스테이츠 이번 기수 수강생들의 평균 나이는 " + cozStudents.averageAge + "살입니다.");
nextGeneration(cozStudents.averageAge);
System.out.println("최종적인 다음 기수 수강생들의 평균 나이는 " + cozStudents.averageAge + "살입니다.");
}
static void nextGeneration(int averageAge) {
averageAge = 30;
System.out.println("다음 기수 수강생들의 평균 나이는 " + averageAge + " 살입니다.");
}
}
class CozStudents {
int averageAge;
}
(리뷰){
코드스테이츠 이번 기수 수강생들의 평균 나이는 29살 입니다.
*해당 메서드의 변수를 그대로 가져오면 되므로 29
1번내용 출력 후 마주하는 nextGeneration은 아래의 static메서드로 정의되어있으니 static메서드의 내용을 우선으로 읽음
다음 기수 수강생들의 평균 나이는 30살 입니다.
*해당 메서드의 변수를 그대로 가져오면 되므로 30
nextGeneration(cozStudents.averageAge); 출력을 수행했으니 아래로 내려감
최종적인 다음 기수 수강생들의 평균 나이는 29살 입니다.
*매개변수로 넘어간 averageAge 변수는 지역 변수로 해당 메서드 안에서만 유효하고, 원본에는 영향을 주지 못하기 때문에 최종적인 다음 기수 수강생들의 평균 나이는 그대로 29살을 유지한다.}
원래는 단순히 메서드 안에 정의된 변수들 중에서 클래스 변수와 인스턴스 변수가 아닌 모든 변수가 지역 변수라고
글로는 알고 있었지만 이번 기회로 지역 변수에 대해서 다시금 명확히 알게되었다.
'각종 문제들' 카테고리의 다른 글
[프로그래머스] 코딩테스트 입문 - 최빈값 구하기 (1) | 2023.03.30 |
---|---|
[프로그래머스] 코딩테스트 입문 - 분수의 덧셈 (0) | 2023.03.28 |
[프로그래머스] 코딩테스트 입문 (0) | 2023.03.28 |
코드 복습 - 이자율 구하기 (0) | 2023.01.13 |
[종합퀴즈] 객체지향 프로그래밍 심화 (1) | 2022.12.30 |