본문 바로가기

애기 개발자(현재)/잡다한거

다른 클래스에 있는 변수 값을 어떻게 다른 클래스로 가져와?

자바에서 다른 클래스에 있는 변수 값을 가져오려면, 그 변수를 public으로 선언하거나 getter 메소드를 사용할 수 있습니다. 예를 들어, ClassA에 있는 변수를 ClassB에서 가져오려면 다음과 같이 할 수 있습니다:

 
       // ClassA.java
        public class ClassA {
            public static String myVariable = "Hello, World!";
        }

// ClassB.java
        public class ClassB {
            public void printVariable() {
                System.out.println(ClassA.myVariable);
            }
        }

이 코드에서 ClassA에 있는 myVariable은 public으로 선언되어 있으므로, ClassB에서 직접 접근할 수 있습니다. 하지만 이 방법은 캡슐화 원칙을 위반하므로, 일반적으로는 getter와 setter 메소드를 사용하여 변수에 접근합니다:

 

 // ClassA.java
        public class ClassA {
            private static String myVariable = "Hello, World!";

            public static String getMyVariable() {
                return myVariable;
            }
        }

// ClassB.java
        public class ClassB {
            public void printVariable() {
                System.out.println(ClassA.getMyVariable());
            }
        }

이 코드에서 ClassA의 myVariable은 private으로 선언되어 있지만, getMyVariable 메소드를 통해 그 값을 가져올 수 있습니다

 

 

 


인스턴스 변수를 통한 전달: 한 클래스의 인스턴스 변수를 다른 클래스에서 접근할 수 있게 하려면, 해당 변수를 public으로 선언하거나 getter와 setter 메소드를 사용할 수 있습니다

public class ClassA {
    private String data; // 인스턴스 변수

    // getter 메소드
    public String getData() {
        return data;
    }

    // setter 메소드
    public void setData(String data) {
        this.data = data;
    }
}

public class ClassB {
    public void accessData() {
        ClassA classA = new ClassA();
        classA.setData("Hello, World!"); // setter를 통해 데이터 설정
        System.out.println(classA.getData()); // getter를 통해 데이터 접근
    }
}

정적 변수를 통한 전달: 정적(static) 변수는 클래스의 모든 인스턴스가 공유하는 변수로, 이를 통해 데이터를 전달할 수도 있습니다

 

public class ClassA {
    public static String data; // 정적 변수
}

public class ClassB {
    public void accessData() {
        ClassA.data = "Hello, World!"; // 정적 변수에 직접 접근
        System.out.println(ClassA.data);
    }
}

메소드 매개변수를 통한 전달: 한 클래스의 메소드가 다른 클래스의 인스턴스를 매개변수로 받아, 그 인스턴스의 메소드를 호출하거나 변수에 접근할 수도 있습니다

 

public class ClassA {
    private String data;

    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }
}

public class ClassB {
    public void accessData(ClassA classA) { // ClassA의 인스턴스를 매개변수로 받음
        classA.setData("Hello, World!");
        System.out.println(classA.getData());
    }
}