본문 바로가기

   
Programming/Java

JAVA 서로 다른 클래스에서 private로 선언된 변수의 데이터를 가져오고 변경하는 방법

반응형

JAVA 서로다른 클래스에서 private로 선언된 변수의 데이터를 가져오고 변경하는 방법

JAVA 프로그래밍을 하면서 클래스가 다른 자바 파일에서 private로 선언된 변수의 데이터를 가져오거나 변경하고 싶을 때 나름대로 쉽게 알아볼 수 있도록 예제를 만들어 보았습니다.


어려운 내용은 아니지만 처음 자바 프로그래밍을 접하고 이론을 배우고 막상 무언가를 만들려고 할 때 대부분 다른 클래스에 선언된 변수의 데이터를 가져오고 변경하는 방법을 헷갈리시는 분들이 조금 있을 거라고 생각합니다.


아래 이미지와 같이 Aaaaa 라는 클래스가 있고 Bbbbb라는 클래스가 있습니다. 대부분 프로젝트나 어떠한 프로그램을 만들 때 아래 이미지와 같이 생성자에서 데이터를 가져오고 변경하여 처리를 많이 하게 되다 보니 배운 내용임에도 불구하고 사용법이 다르다 보니 헷갈리는 분들도 꽤 있는 것 같습니다. 


아래 이미지와 같이 Bbbb클래스에 있는 변수에 데이터를 다른 클래스에서 가져와서 사용하고 변경하고 싶을 때 B 클래스에 선언된 변수가 public이라면 다른 클래스에서 B 클래스 객체를 생성하고 get이나 set 메소드 없이도 접근이 가능합니다.


하지만 대부분 클래스를 만들 때 private로 변수를 선언하기 때문에 반드시 다른 클래스에서 B 클래스에 있는 변수의 데이터를 가져오거나 변경해 주시려면 get(), set() 메소드로만 데이터를 가져오고 변경하실 수 있습니다.


그래서 B 클래스의 데이터를 가져오기 위해서 가장 먼저 B 클래스 객체를 생성해 주셔야 접근이 가능하기 때문에 B 클래스 객체를 생성해 주셔야 합니다.


그런 뒤에 생성한 B 클래스의 데이터를 제공하기 위해서 만든 get 메소드와 set 메소드를 통해서 다른 클래스에서도 자유롭게 B 클래스 객체를 생성만 해주신다면 B 클래스의 데이터를 가져오고 변경하실 수 있습니다.



만약 B 클래스가 public으로 선언된 변수라면 get set 메소드가 없어도 다른 클래스에서 데이터 접근이 가능합니다. A클래스에서 객체를 생성하고 get이나 set 메소드를 통해서 데이터를 가져오고 변경하는 것이 아니라 객체만 생성하게 되면 get(), set() 메소드가 없어도 B 클래스에 있는 데이터를 가져오고 수정 할 수 있습니다.


아래 이미지는 B 클래스가 public으로 멤버 변수가 사용된 경우 다른 클래스에서 B 클래스에 있는 데이터를 가져오는 코드입니다.



위 내용을 보면 그럼 public으로 선언해서 사용하면 되지 않나? 왜 private로 사용하는 거지? 궁금하신 분들은 아래 링크된 글을 참고하시면 멤버 변수를 public보다는 private 접근 지정자로 변수를 사용하는 이유에 대해서 어느 정도 감을 잡으실 수는 있을 것 같습니다. - https://kldp.org/node/48605


Aaaaa.JAVA

package test;

 

public class Aaaaa {

    

     public Aaaaa() {

           Bbbbb b = new Bbbbb();

          

           //다른 클래스에 있는 데이터를 가져올땐 B클래스 객체를 생성하고 get 메소드로 데이터를 가져옴

           System.out.println(b.getBdata());

           System.out.println(b.getBnum());

          

           //다른 클래스에서 B 클래스의 데이터를 변경하고 싶을땐 set 메소드로 데이터 변경 가능~

           b.setBdata("다른 클래스에서 B클래스에 데이터를 변경~");

           b.setBnum(999999999);

          

           //변경후

           System.out.println(b.getBdata());

           System.out.println(b.getBnum());

     }

    

     public static void main(String[] args) {

           Aaaaa a = new Aaaaa();

     }

}

 




Bbbbb.JAVA

package test;

 

public class Bbbbb {

     // Bbbb클래스

     private String bdata = "b클래스의 bdata";

     private int bnum = 1004;

          

     public String getBdata() {

           return bdata;

     }

     public void setBdata(String bdata) {

           this.bdata = bdata;

     }

     public int getBnum() {

           return bnum;

     }

     public void setBnum(int bnum) {

           this.bnum = bnum;

     }

    

    

}

 



어려운 내용은 아니지만 이런 내용에 글도 있으면 좋을 것 같아서 나름대로 간단히 한번 작성해 보았습니다. 혹시라도 다른 클래스에 있는 데이터를 어떻게 가져오고 변경해야 하는지 궁금하셨던 분들에게 조금이라도 도움이 되는 내용이었기를 바랍니다. :)

반응형