기타/정보처리기사
정보처리기사 정처기 | 정적(static) 메서드와 인스턴스 변수 접근 | 필기&실기 개념
YUNI Heo
2024. 1. 18. 20:50
반응형
⭕ 정보처리기사 정처기 | 정적 메서드와 인스턴스 변수 접근 | 필기&실기 개념
Java에서 정적 메서드와 인스턴스 변수 간의 관계에 대해 알아보겠습니다. 아래의 코드를 통해 실제 예시를 들어가며 개념을 이해해 보겠습니다.
class Person {
private String name;
public Person(String personName) {
name = personName;
}
public static String getName() {
return name;
}
public void printName() {
System.out.println(name);
}
}
public class Main {
public static void main(String[] args) {
Person personObject = new Person("Kim");
personObject.printName();
}
}
➡️ 정적 메서드와 인스턴스 변수
public static String getName() 메서드는 정적(static) 메서드로 선언되어 있습니다. 정적 메서드는 클래스 수준에서 호출되며, 객체의 인스턴스와 관련이 없습니다. 하지만 여기서 주의해야 할 부분은 해당 메서드에서 name이라는 인스턴스 변수에 직접 접근하고 있다는 점입니다. 이는 정적 메서드에서는 인스턴스 변수에 직접 접근할 수 없다는 규칙을 어기는 것입니다.
➡️ 문제 해결
문제를 해결하기 위해서는 getName 메서드를 정적(static)에서 인스턴스 메서드로 변경해야 합니다. 인스턴스 메서드는 객체의 인스턴스에 속하며, 객체의 상태(인스턴스 변수)에 접근할 수 있습니다. 수정된 코드는 다음과 같습니다.
public String getName() {
return name;
}
⭕ [예시]
➡️ 2023년도 3회 실기 기출 - 13. [JAVA 코드] 오류가 발생하는 부분을 수정하시오.
class Person {
private String name;
public Person(String personName) {
name = personName;
}
public static String getName() {
return name;
}
public void printName() {
System.out.println(name);
}
}
public class Main {
public static void main(String[] args) {
Person personObject = new Person("Kim");
personObject.printName();
}
}
정답
public static String getName() {
// 여기서 name은 인스턴스 변수이므로 정적 메서드에서 직접 접근할 수 없습니다.
// 따라서 아래와 같이 수정합니다.
// return name;
return null;
}
해설
- getName 메서드를 static에서 인스턴스 메서드로 변경해야 합니다. 왜냐하면 name은 인스턴스 변수이기 때문에 정적 메서드에서 직접 접근할 수 없습니다.
getName 메서드의 반환 타입을 String으로 변경하여 실제 이름을 반환하도록 수정합니다. 현재는 임시로 null을 반환하고 있습니다.
[정보처리기사/[최신] 실기 기출] - [2023년도 3회] 정보처리기사 정처기 | 실기 기출 | 회차별 정리
반응형