최근에 자바 관련 문제를 푼 적이 있는데
처음부터 차근차근 개념을 확실히 다져놓지 않아서 그런지 많이 헷갈리더라구요 ㅠ
다시 공부를 하려고 하는데 조금 헷갈리는 개념이 있어서 질문드립니다..
처음에 p 객체에는 Parent가 반환되었고, 내부에 가지고 있는것도 Parent니까
Parent의 값 5 호출, 5를 반환하는 getValue가 실행된거고
밑의 c 객체는 Child가 담겨있는 Parent 객체를 받아서 c.a를 출력하면 Parent가 가진 값인 5가 나오고
c.getValue()를 하면 Child가 가진 getValue를 호출해서 10이 나오게 되는건가요?
그리고 Java의 Immutable에 대해서도 조금 헷갈리는게 있는데
Java는 파라미터로 받을때 주소를 받아서 넘기기 때문에
String a = "aaa"
라고 선언한 뒤 다른 함수에서 a를 받아서 a+="bbb" 라고 하면
aaabbb가 되는건줄 알았는데 아니더라구요
요렇게 aaa가 그대로 출력되던데 요거도 조금 이해가 안가네요 ㅠ
이건 String이 Immutable 객체라서 변경할수 없어서 그런건가요?
위의 코드가 정상적으로 bbbasdfs가 출력되는것은 Immutable 객체가 변경되는것이 아니라
+=을 통해서 bbbasdfs를 가진 String이 리턴되어 bbb에 담겨 재할당되기때문에 값이 바뀌어 출력되는건가요..??