CreatorB18
624
2019-06-12 17:18:58
3
89

(자바) 외부제공클래스와 상속을받아쓰는클래스 인터페이스클래스 서로간의 분간이 잘 안되는 어려움이있습니다. 혹시 포인트를 짚어주신다면 감사하겠습니다.


자바에서


외부 클래스의 메소드들을 갖다 쓸 경우, 크게 3가지 정도 생각하고있습니다. 

외부 클래스를 여기서는 OutClass 라고 정의하겠습니다.


첫번째, OutClass의 static메소드로 활용하는 경우 

굳이 객체생성없이 바로바로 사용이 가능합니다. 상속할 필요도 없거니와 편리하게 사용이 가능합니다. 이방법을 많이 사용하게될 줄 알앗습니다. 그런데 현실은 객체지향프로그램 이름처럼 객체를 상속받아 사용하는 프로그램들이 더 많았습니다. 


보안때문에 자바의 3대특성인 캡슐화 다형성 상속을 반드시 사용해야만 하는것인가요? 객체지향이라는점에서 좋은데 기능을 쉽게 구현한다는 개념이있습니다. 

하지만 저는 C언어부터 공부해서 절차지향에 익숙해져있어서 자바가 객체에는 적응이 조금 더딘편인것같습니다.  제가볼땐 코드가 더 많아서 이게 쉬우려고하는데 어려운건가 긴가민가합니다. 

아직도 객체의 진정한 의미를 잘모르겠습니다 ㅠㅠ 


예를들면 람다식같은경우, 그냥 따로 함수만드는게 더 시간절약이되지않을까?(물론 처음 보는입장에서 람다식의 구성요소는 매우 깐깐해보였습니다. 잘 사용하시는분들이 계신지 궁금합니다.) 


익명구현객체를 생성한다거나 익명자식객체를 생성하는건 편리하긴한데 이러한 방법들이 중첩되고 많으니 가독성이 떨어지지는않을까 고민입니다. 





두번째, OutClass의 객체를 생성한뒤에 사용 

가장 많이쓰이는방법이고 현재는 조금은 익숙해져있는 상태입니다. 하지만 아직두 싱글톤, 그외의 패턴들은 햇갈립니다.


세번째, OutClass 를 상속받아 자식클래스로 구현하기 

OutClass의 다형성을 구현하게된다면 

OutClass dog1 = new 자식클래스();

로 선언 하고, dog1.부모클래스의메소드접근/부모클래스멤버접근/자식클래스오버로딩된메소드접근 으로 사용합니다. 



이경우도 많이 사용해봐서 이해가됩니다. 



네번째, OutClass 인터페이스를 상속받아 구현클래스로 사용하기 

implement OutClass 로 구현객체를 생성하면 

인터페이스인 OutClass의 정적메소드와 디폴트메소드 그리고 상수까지 사용이 가능하며 OutClass의 추상메소드는 반드시 구현클래스에서 재정의해서 @Override메소드를 생성하고 사용할지 말지를 정해야합니다. 


그런데 의문점이, 차라리 Override하지말고 인터페이스에 static으로 써놓고 

0
0
  • 답변 3

  • Frudy
    2k
    2019-06-12 17:26:52

    아래의 키워드에 대해 먼저 알아보시면 고민에 도움이 되실거같아요.

    1. 객체지향설계 원칙 (SOLID)

    2. 객체 vs 클래스 vs 인스턴스 vs 인터페이스

    0
  • fender
    13k
    2019-06-12 17:49:45

    아직 복잡하고 큰 시스템을 설계해본 경험이 많지 않아서 드시는 의문점일 것 같습니다. 질문하신 내용에서 프로그래밍을 어떤 기능 구현을 위해선 어떤 '함수'가 어디있는지 찾아서 가져다 쓰면 된다 그런 사고의 틀이 느껴지는데, 이는 객체지향에 아직 익숙하지 않은 경우 흔히 보게되는 현상입니다.

    하지만 복잡한 시스템은 그런식으로 설계하기도 어렵고 그렇게 작성한 코드는 사용법을 파악하거나 유지보수 하기도 쉽지 않습니다.

    개발 언어의 패러다임은 결국 그런 복잡도를 관리하기 위한 다양한 방법이고, 자바 같은 언어는 이를 객체지향이라는 접근을 통해 해소하려할 뿐입니다.

    그래서 질문하신 내용에 대한 건 간단한 프로젝트부터 어느 정도 객체지향을 통한 모델링 연습을 해보시면 스스로 답을 찾으실 수 있는 경우가 아닐까 싶습니다.

    0
  • Frudy
    2k
    2019-06-12 17:52:49

    fender

    제가 그랬어요.

    저도 라이브러리만들면서 하나씩하나씩

    객체지향이란 이런걸까? 단서가 생겼었거든요.

    물론 여전히 초보입니다.. 또륵

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.