자바에는 instanceof 연산자가 있습니다. 무엇일까요? String 클래스의 equals 메서드를 보겠습니다. anObject는 Object 객체를 참조하는 변수입니다. 980번째 줄을 보면, anObject instanceOf String 이라고 되어 있습니다. anObject가 String 인스턴스인지 확인하겠다는 것입니다. 그런데 왜 하필? 일단, 우리는 anObject가 Object 참조형이라는 것을 볼 필요가 있는데요. Object는 최상위 루트 부모입니다. 그러면, String도 Object를 상속받은 거고, MyObj1도 Object를 상속받은 것이라고 할 수 있어요. 그러면 String은 Object라고 할 수 있나요? 네 맞습니다. 그러면 반대로, Object 인스턴스는 String..
코딩/Java 검색 결과
이번 시간에는 참조형에서의 upcasting에 대해 알아보도록 하겠습니다. 그리고 다형성에 대해서 간략하게 논해보도록 하겠습니다. 먼저 예제 프로그램을 보겠습니다. Animal 클래스와 Animal을 상속받은 dog와 cat이 있습니다. dog와 cat은 오버라이딩이 된 speak 메서드를 가지고 있습니다. Main 메서드는 위와 같습니다. 프로그램의 실행 결과는 어떻게 나올까요? 분명히, 저는 Animal 참조 변수 dog1과 cat1의 speak 메서드를 수행하였습니다. 그런데, 실행 결과는 I'm dog, I'm cat이 나옵니다. I'm animal이 아니라요. 동일한 type이지만, 다양한 결과가 나왔습니다. 이를 다형성이라고 합니다. 그런데, 우리는 dog나 cat을 참조하는 참조 변수 값을,..
상속과 다형성을 이해하기 위해서는, 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,..
상속이랑 다형성은 Java를 배울 때 가장 어려운 부분 중 하나입니다. 3 ~ 7편으로 나눠서, 차근 차근 써 보도록 하겠습니다. 이번 시간에는, 자식 객체를 생성했을 때, 어떤 일이 일어나는지 보도록 하겠습니다. 코드를 보겠습니다. 뭔가 간단해 보이는 것은 기분 탓인 듯 싶습니다. 일단, Parent의 생성자에서는 I'm parent init 이라는 문구를 출력합니다. 그리고, Child에서는 I'm child init이라는 문구를 출력합니다. main 함수에서는 Child 객체를 하나 생성합니다. 실행 결과가 어떻게 나올까요? 요렇게 나옵니다. parent init 다음에 child init이 출력됩니다. 어떻게 흘러갔는지 차근차근 보겠습니다. 먼저 생성자의 역할을 다시 상기해 볼 필요가 있습니다. ..
Interface는 많이 들어보셨을 겁니다. 왜 쓰는 것일까요? 에 대한 질문에 대한 답은 어느 정도 하실 거라고 생각합니다. 그렇지만, 이게 쉽게 잘 와 닿는 개념은 아닐 거라 생각합니다. ps에서 많이 발생할 만한 상황을 예로 들어보겠습니다. Java에서 Comparable은 interface로 선언이 되어 있습니다. 그리고 이 인터페이스 안에는 Target과 매개변수를 비교하는 compareTo가 정의되어 있습니다. 이것은 실체는 없는 메소드로 정의가 되었습니다. '비교 가능한 기능을' 구현한 Obj입니다. 그런데, 잘 보면, 그냥 Obj는 생성자만 있을 뿐, 그 어디에도, 눈을 씻고 찾아봐도 비교를 하는 메서드가 없음을 알 수 있어요. 비교 가능 함수를 구현해 보겠습니다. compare 가능한 함..
최근댓글