티스토리챌린지3 객체 생성의 모든 것 (2) - 업캐스팅 Brief Summary지난 포스트에서는 선언하는 객체 타입과 할당받는 메모리의 객체 타입이 일치하는 선언-초기화 생성을 다루었다. 그러나 자바로 코딩테스트를 준비해본 사람이라면 이 모양새가 익숙할 것이다. List lst = new ArrayList();그렇다. 자바는 선언하는 객체와 할당받는 메모리의 객체가 다른 타입인 객체 생성도 지원한다. 이것을 자바 클래스 상속 관계에 따라 업캐스팅과 다운캐스팅으로 분류하는데, 자바의 다형성을 수호하는 두 기둥이라고 할 수 있다. (물론 기둥이 2개만 있지는 않다. 다형성은 그렇게 쉬운 친구가 아니다. 유감스럽게도...)이 포스트에서는 바인딩과 업캐스팅에 대해 설명한다. 다운캐스팅은 언젠가 느낌(!)이 오면 써 보겠다.1. 바인딩바인딩의 정의는 이렇다. (출처는.. 2024. 11. 9. 객체 생성의 모든 것 (1) - 문자열 Brief Summary기본적으로 객체 생성은 [선언 + 초기화] 작업을 종합해서 이야기한다. 따라서, 흔히 보는 객체 생성 코드는 이런 모양이다.A a = new A();이 코드의 의미를 따져보면 이렇다.A a: A 타입의 객체를 a라는 레퍼런스 변수로 가리키는데,new A(): A 타입 크기의 메모리를 할당함. (+ 생성자 메서드 실행)이렇게, 객체를 생성할 때 사용하는 new 연산자는 메모리의 Heap 영역에 객체가 사용할 공간을 할당해주고 그 주소를 반환한 후 생성자를 실행한다. 여기서 포인트는 new가 메모리 공간을 할당해준다는 점이다. 그렇지만 모든 선언 - 초기화 작업에 new가 들어가는가? int i = 0을 힐끔 쳐다보자. new는 코빼기도 보이지 않는다. 그렇다. 앞선 볼드체는 수정되어.. 2024. 11. 8. Static의 모든 것 언젠가 CS 공부 기록이랑 면접 대비용 Java 이론을 정리할 생각이긴 했는데, 당장 시작할 생각은 없었다.근데 오블완 챌린지가 열리는 바람에 일단 전에 쓰다 만 거부터 올려본다.Brief Summarystatic: 고정된그렇다. static은 고정된 것을 말한다. 그게 무슨 뜻일까?static 변수와 메서드는static 영역에 저장된다.클래스 소속이다. (인스턴스 소속이 아니다)동기화 문제에 주의해야 한다.사실, 이 세 가지는 같은 말을 하고 있다.static은 클래스 소속이기에 static 영역에 저장되고, 동시에 반대로 static 소속이기에 인스턴스(객체)에 관계 없이 클래스 소속으로 고정된다. 그렇기 때문에 마땅히, 각 인스턴스에서 호출해서 사용할 경우 동기화 문제에 주의해야 한다.더 자세히 알.. 2024. 11. 7. 이전 1 다음