상속(2)

mtak·2021년 4월 9일
0

Spring Study

목록 보기
4/13

학습 범위: 277 - 295p

  • 메소드 오버라이딩
    메소드의 오버라이딩과 오버로딩이 다시 헷갈려서 찾아보고, 앞의 게시물을 수정했다.
    오늘 공부한 오버라이딩에서 새로 매운 부분은 동적 바인딩이라는 것이다. 동적방니딩은 실행할 메소드를 컴파일 단계(compile time)가 아닌 실행 단계(run time)에서 결정하는 것이라고 한다. 이 동적 바인딩 때문에 오버라이딩 시, 슈퍼클래스의 메소드를 무시하고 서브클래스의 메소드를 실행하더라. 그렇다면 슈퍼클래스의 메소드는 실행시키는게 불가능하냐 하면 그건 또 아니다. super라는 놈을 서브 클래스 내에서 사용하면 수퍼클래스 내에 있는 코든 멤버에 접근할 수 있더라. (super을 이용하거나, 메소드 오버로딩하는걸 정적 바인딩이라고 부르더라.즉 이놈은 실행할 메소드를 compile time에 결정하는 놈이다.)
    메소드 오버라이딩의 제약사항에 대해 공부할 때 static, private, final로 선언된 메소드는 서브클래스에서 오버라이딩👉 동적 바인딩 못한다고 하는데 왜 그럼지 생각을 해봤다.
    static은 클래스가 로딩되면서 같이 올라가서 동적 바인딩 안될 것 같고, final은 그냥 그 메소드를 유일무이하게 쓰려고 만든거니까 안되는데 private은 왜 안되는지 모르겠더라. 그래서 관련 링크를 찾아봤다. private은 왜 오버라이딩 안되노
    그렇다 . 서브클래스가 해당 클래스를 모르니까 그런거다.. 그렇군..

  • 추상 클래스
    생긴건 c에서 함수원형처럼 생겼다. 추상 메소드와 추상 클래스가 있는데 둘 다 abstract로 선언한다. 근데 추상메소드는 단독행동 ㄴㄴ해서 추상 클래스로 보호해줘야 한다. 이 추상 클래스는 인스턴스를 못만든다는데 그렇다고 레퍼런스 변수도 선언 못하냐 그것도 아니다. 그럼 레퍼변수는 어따가 써먹는지는 담에 알려준단다(ㅡ.,ㅡ;;)
    그럼 이 추상 클래스를 어따가 써먹느냐, 상속에 써먹는다. 추상클래스를 상속하는 서브 클래스는 추상 클래스의 추상메소드를 오버라이딩으로 쉴드치지 않는 이상 순순히 서브추상클래스(abstract꼬리를 붙여야)가 되야한다. 자 이 쉴드가 바로 구현이다. 뭔소리냐 하면, 추상클래스가 설계부분이고 그걸 상속하는 서브 클래스가 (쉴드를 제대로 한다면)구현부분인 것이다. 그러하다.

    좀 많이 신기하다. 프로그래밍 언어 이자식은 정말 개발자 친화적인 것 같다.(당연한 말인가;;)

profile
노는게 젤 조아. 친구들 모여라!!

0개의 댓글