기타/정보처리기사

정보처리기사 정처기 | 정적(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회] 정보처리기사 정처기 | 실기 기출 | 회차별 정리

 

[2023년도 3회] 정보처리기사 정처기 | 실기 기출 | 회차별 정리

⭕ [2023년도 3회] 정보처리기사 정처기 | 실기 기출 | 회차별 정리 ➡️ 1. [JAVA 코드] 알맞은 출력 값을 작성하시오. public class Main { public static void main(String[] args) { Parent childInstance = new Child(); childIns

sugoring-it.tistory.com

반응형