하.. 오늘은 어제 못끝낸 업무의 연장선이랄까..
여러번 얘기하긴 했지만 내가 지금 프로젝트를 하나 맡아서 진행하고 있는데.
아직 실력이 미숙하다보니 간단한 문제라도 싹- 진행을 못하는 것 같다.
여태껏 그래왔지만 어느 한 포인트에서 진척이 없으면 그 날 남은 하루는 좀 ... ;ㅅ; <- (눈물흘리는 거 좀 귀엽다.)
이렇게 한 포인트에 빠지는게 한 두번 있는 일은 아니지만 그래도
그 날 하루에 진척이 없다거나 했던 작업을 롤백한다거나 그런 일이 있으면... ;ㅅ;
web쪽인데 javascript로만 구현해야 하는 부분이 있어서 html, css로 구현했으면 진작했을 부분인데
좀 아쉽긴하다. 내일은 그렇게 빼서 구현해보는걸로 진행해봐야겠다.
뭔가 업무에 아쉬움이 남아 주저리주저리 해봤다.
오늘은 새로운 17 챕터에 들어가며 인터페이스와 추상클래스의 챕터이다.
추상 메소드만 담고 있는 인터페이스의 예시는,
interface Printable {
public void print(String doc); // 추상 메소드
}
위에서 보이듯이 메소드의 몸체가 비어 있는 메소드를 가리켜 '추상 메소드'라고 한다.
이 인터페이스를 대상으로는 인스턴스 생성이 불가능하다.
다른 클래스에 의해 다음과 같이 '상속'될 뿐이다.
class Printer implements Printable {
public void print(String doc) { // Printable 인터페이스의 print 메소드 구현
sout(doc);
}
}
클래스가 인터페이스를 상속하는 행위는 '상속' 이 아니라 '구현'(Implementation)이라고 한다.
문법 관계는 상속과 동일하지만 본질은 '구현'이기 때문이라고 한다.
위의 경우에도 Printer 클래스가 Printable 인터페이스가 갖고 있는 메소드 print의 몸체를 구현하였다.
인터페이스의 특징은
그러니깐
class Robot extends Machin implements Movable, Runnable {...}
이런식으로 사용이 가능한것!
그리고 또 추가로 2가지 특징을 기억해야하는데~
말만 들어서는 좀 복잡하다고 느껴질 수 있지만,
여태까지 해왔던 내용들이다.
예시를 들어준다면~
Printable prn = new Printer(); // Printable형 참조변수 선언 가능.
첫번째는 이렇게 될 것이고,
두번째는 당연한거지! 인터페이스의 추상 메소드와 이를 구현하는 메소드 사이에는 오버라이딩 관계가
성립하겠지 당연히, 그러면 어제 알아본 @Override 선언이 가능해지는거지.
이쯤되면 슬슬 헷갈릴 때가 되었는데 ㅋㅋㅋ 난 왜 항상 헷갈리는지 모르겠지만,
단어가 비슷해서 둘이 헷갈린다.
오버로딩(Overloading) : 같은 이름의 메소드를 여러 개 가지면서 매개변수의 유형과 개수가 다르도록 하는 기술.
오버라이딩(Overriding) : 상위 클래스가 가지고 있는 메소드를 하위 클래스가 재정의 해서 상요한다.
다시 한번 상기시키고 넘어가자!
그리고 위에도 적어놨지만 상속과 구현의 차이점에 대해서도 하루 잡고 해봐야겠다.
할게 많구나..
=> 리뷰도 해야하고, 상속/구현 차이점.
바로 내일하면 좋겠지만 내일은 오늘 설명한 내용을 하나의 예제에 담아서 살펴보는 시간을 가질 것이다.
미리봤지만 참 쉽고 좋게 설명해놓은 코드라고 생각했다.
오늘의 코멘트: 할 게 많으면 좋지 뭐~