상속과 다형성을 이해하기 위해서는, static binding과 dynamic binding에 대해서 이해하는 것이 핵심이라고 생각합니다. 오늘 이에 대해서 간단하게 알아보겠습니다. 예제 프로그램 1을 보겠습니다. Obj class가 있고, Obj를 상속받은 MyObj가 있습니다. 이 2개는 static 메소드인 foo를 가지고 있습니다. Main 클래스는 위와 같습니다. 이 때, 실행 결과는 어떻게 나올까요? Obj, Obj, MyObj가 나옵니다. o1, o2가 Obj를 참조하는 변수이기 때문입니다. 이러한 정보는 complie 타임에 올라갑니다. Obj의 필드 x 값이 100입니다. 그리고 MyObj의 필드 x 값이 0입니다. Main 클래스는 위와 같습니다. 실행 결과가 어떻게 나올까요? 100,..
static 검색 결과
java에서 static 필드에 대해서 배웠습니다. 그러면, 함수 앞에도 static을 붙일 수 없을까요? 이를 정적 함수, 혹은 static 함수라고 하는데요. 예를 들어보겠습니다. 저는 myClass 클래스를 선언했습니다. 그리고, main 함수에서 myClass.foo()를 호출하고 있습니다. 그래도 될까요? 네. 일단 된다고 합니다. 일반 메서드와 다른 것은, 일반 메서드 (instance method) 는 객체.xxx(); 로 호출을 했습니다. 그런데, 이것은 class 이름.xxx();로 호출을 했다는 점이 다릅니다. 이게 왜 그렇게 될 수 있는지는 나중에 다시 이야기 해 드리도록 하겠습니다. 지금은 그냥, 아. 클래스 이름.함수명() 으로 호출할 수 있는 게 정적 함수구나. 정도만 짚고 넘어..
C언어에서 static 변수는 특이한 속성을 가지고 있습니다. 반절 정도는 지역 변수, 반절은 전역 변수 속성을 지니고 있는데요. visible한 범위는 블록 내이지만. 메모리는 프로그램이 종료가 될 때 까지 해제가 되지 않아요. 의외로 많은 함수들이, 내부에서 static, 그러니까 정적 변수를 쓰기도 합니다. 레퍼런스 시간에 몇 번 언급을 했을 거에요. 예제 프로그램 1개만 분석해 보겠습니다. 먼저 main 함수는 foo를 2번 호출합니다. 다음에, foo는 정적 변수인 atari를 가지고 있는데요. 10번째 줄에도 선언이 되어 있고, 12번째 줄에도 선언이 되어 있습니다. 10번째 줄과 16번째 줄에 주석이 달려 있네요. 일단 프로그램을 실행해 봅시다. atari 라는 변수가 not decleare..
최근댓글