Java 언어 Korean Java 총 정리[51. 객체 심화] BY Dolphin 2023-11-12 0 Comments 1.04K Views 객체 심화 이전 걸음을 통해서 has문제까지 풀어보면서 has에 대해서 이해를 하셨을 것이라고 생각을 합니다. has라는 것이 결국 class로 설계를 한 것을 객체를 만들고 그것을 다른 class에 참조 자료형 변수로 만들어 사용을 하게 되는 객체에 대한 이야기입니다. 그럼 여기서 객체를 조금 더 자세히 이야기를 하면 좋을 것 같습니다 . 그래서 이번에는 객체를 자세히 해보겠습니다. 객체를 생성을 하는 것이 이전에서 계속 배운 과연 main 메소드에서만 가능 할까요? 당연히 이렇게 획일적이지 않을 것이라고 여러분들도 생각을 하실 것입니다. 당연히 객체는 여러 곳에서 만들어 질 수가 있습니다. 그리고 그것을 사용하거나 다른 참조 자료형 변수에 저장도 해야 합니다. 이런 여러가지 부분을 이번 글을 통해서 설명을 드리도록 하겠습니다. 객체는 main 메소드에서 생성을 하는 것을 많이 봤습니다. 하지만 이것은 일부이고 class 안에 있는 메소드에서 객체를 생성을 할 수도 있고 또한 class에서 참조 자료형 선언을 할 때 객체를 생성을 할 수도 있고 아니면 마지막으로 생성자에서 객체를 생성을 할 수 있습니다. 이번에는 메소드에서 생성해서 객체를 움직이면서 여러가지 질문을 통해서 이해를 하도록 해보겠습니다. 객체 심화 메소드 생성 위에 소스를 보면 class A에서 메소드 makeB에서 class B 객체를 생성하고 본인 멤버변수 B b에 대입을 하고 그대로 return을 하여서 메소드를 호출을 한 곳에 객체를 사용을 할 수 있게 해줍니다. 그리고 class B는 정수 변수 k를 하나 가지고 있습니다. A a = new A() 이 부분을 main 메소드로 생각을 하시면 됩니다.그럼 A객체를 생성하고 그 객체를 이용해서 B객체를 생성한 것을 그대로 B b 변수에 대입을 해줬습니다. 이때 class A안에 있는 b 변수와 메소드를 호출해서 값을 받은 main 메소드에 있는 b변수 같은 객체를 가지고 있는 것일 까요? 이것이 대해서 생각을 해보셔야 합니다.그리고 또 makeB 메소드가 호출 된다면 b1변수와 main 메소드에 있는 b변수는 같은 B객체 인지 그리고 class A에 안에 있는 b변수와 같은지?이런 것을 생각을 해야 객체에 대한 이해를 정확히 할 수 있습니다. 객체 심화 메소드 이해 이 위의 그림을 보고 이해를 하시면 도움이 될 수 있습니다.우선 객체를 생성했지만 그 객체를 main에 있는 b와 본인 멤버 변수 b와 동일하게 사용이 되게 구현이 되어 있습니다.그 기준으로 위의 문제를 풀어 보겠습니다.b1.k의 정답은 30입니다.b.k의 정답은 20 입니다.a.b.k의 정답은 30입니다.위 정답이 나오는 이유는 처음 a.makeB()를 호출하면 B의 객체는 class A의 멤버 변수 b와 main메소드에 있는 b와 똑같은 객체를 바라보게 됩니다.하지만 그 다음에 다시 makeB()가 호출되면 b1과 class A 멤버 변수 b가 같은 객체를 바라보게 됩니다. 그래서 위와 같은 결과가 나오게 됩니다. 함께 보면 좋은 글 § Java 마흔 세걸음 class(클래스)란? § Java 마흔 네걸음 class(클래스) 예제 § Java 마흔 다섯걸음 class(클래스) 문제 1 § Java 마흔 여섯걸음 class 내부 용어 정리 § Java 마흔 일곱걸음 null § Java 마흔 여덟걸음 생성자란? § Java 마흔 아홉걸음 has 란? § Java 오십 걸음 has 문제