[ KOSTA 교육 16일차 ] 객체지향 2번째 ( Chapter 7 ) 파트

junjun·2024년 5월 12일
0

KOSTA

목록 보기
14/48

클래스가 이제 여러개임.

상속

  • 클래스 상속
  • 인터페이스 상속
  • import, **extends** ( 클래스 )
  • implements ( 인터페이스 )
  • Access Modifier ( private, protected, public, default )

Use, Re-Use

왜 use 가 아니라 re-use인가?

  • 부모의 것을 뜯어 고쳐서 만드는 것 ( = 재사용 )

    • 부모님 집에서 망치를 가져왔는데
      망치의 손잡이가 길어서 자르고, 테이프 붙여서 쓴다 → 가능.
    • 왜 상속을 쓰냐? 걍 쌩판 백지로
      • 개발 시간을 단축할 수 있는 가장 큰 장점이 있다.
        (있는거 가져다 쓰면되니까)
  • 이웃의 것을 가져와서 쓸 수 있는대로 걍 사용하는 것 ( = 사용 )

  • 자손은 조상의 모든 멤버를 상속받는다.
    ( 생성자, 초기화 블럭은 제외 )

  • 자손의 멤버개수는 조상보다 적을 수 없다.

  • 상속은 캡슐화가 깨질 수 있다.

  • 조상의 변경은 자손에게 영향을 미친다.
    ( OCP 위배 → 개방-폐쇄 원칙 / 변경에는 열려있고, 수정에는 닫혀있어야 한다 )

클래스 간의 관계 - 포함관계(Composite)

  • 한 클래스의 멤버변수로 다른 클래스를 선언하는 것 ( Composite )

  • 작은 단위의 클래스를 먼저 만들고, 이들을 조합해서 하나의 커다란 클래스를 만든다.

  • 뜯어고치는 게 아니고, 빌려 쓰는거다.

  • 비중 높은 클래스 하나만을 상속관계로,
    나머지는 포함관계로 진행한다. ( 클래스 간의 관계 )

블로그 주제 ( 상속과 조합 관계, 그리고 캡슐화 )

오버라이딩

  • 클래스가 한 개가 아니라, 여러 개!!!

  • 조상클래스로부터 상속받은 메서드의 내용
    상속받은 클래스에 맞게 변경하는 것을 **오버라이딩**이라 한다.

  • 오버라이딩 조건

    • 선언부가 같아야 한다. ( 이름, 매개변수, 리턴타입 )
    • 접근 제어자를 좁은 범위로 변경할 수 없다.
      • 조상의 메서드가 **protected**라면, 범위가 같거나 넓은 **protected****public**으로만 변경할 수 있다.
    • 조상클래스의 메서드보다 많은 수의 예외를 선언할 수 없다.

오버로딩

  • **오버로딩은 클래스 하나에서!!!!**

package와 import

  • import를 할 떄, * 을 쓰는 것보다,
    하나하나 언급해주는 것이 좋은 이유?
    - *하면 메모리에 다 올라오나? 그건 아니다! 비효율적이지는 않다. ( = new로 올릴 때만 메모리가 올라간다. )
    1. import 내용을 표시해주면, 내가 어떤 코드를 짜는지 다른 개발자가 유추하기가 쉽다.
  • protected → 같은 패키지면 사용 가능, 다른 패키지라면 해당 클래스가 다른 클래스의 자식이어야 함.

스프링

  • 컨테이너 → 조립기 역할을 한다.
  • 뭘 조립해주냐? Java Code의 new를 막는다. ( 근데 돌아가는게 DI )
  • 어딘가에서 new를 한다. → 이건 Spring Container가 해준다.
    • 앞단에 누군가를 두어야한다. 이것이 인터페이스 ( 인터페이스의 다형성 )
    • 클래스, 인터페이스 ⇒ abstract ( → 이것을 이해해야 Spring DI로 들어갈 수 있음 )

0개의 댓글