2022.11.07.MON

ronglong·2022년 11월 7일
0

코드스테이츠 Day13

<객체 지향 프로그래밍 심화>

  1. 상속(Inheritance)
  • 기반 클래스의 속성과 기능을 이어받아 새로운 확장된 클래스에서 사용하는 것
  • class 확장된 클래스명 extends 기반이 되는 기존 클래스명{}
  • Java는 단일 상속만 가능
  • 'SportsCar는 Car이다.'의 관계(is)
    - cf. 포함 관계 : 다른 클래스를 참조 변수로 선언하여 사용하는 것
    • 'Employee는 Address를 가지고 있다.'의 관계(has)
  • 메서드 오버라이딩 가능
  • 모든 객체를 상위 클래스 타입으로 선언하면 배열로 묶어서 편리하게 관리 가능
  • super. : 상위 클래스의 객체를 가리킴
  • super() : 생성자 내부의 첫 줄에서 상위 클래스의 생성자 호출
  • Object 클래스 : Java의 모든 클래스의 최상위 클래스. 아무런 상속 없을 시 자동으로 컴파일러가 'extends Object' 추가.
  1. 캡슐화
  • 목적 : 데이터 보호, 정보 은닉(data hiding)
  • 패키지 : 특정 목적을 공유하는 클래스와 인터페이스의 묶음(폴더와 파일의 관계)
    - import문을 통해 다른 패키지 내의 클래스 사용 가능
  • 제어자 : 형용사의 역할
    - 접근 제어자 : data 보호 및 은닉. 각 대상에 대해 단 한 번만 사용할 수 있음
    • public : 모든 접근 허용
    • protected : 동일 패키지 또는 상속받은 확장된 클래스에서 접근 가능
    • default(기본값) : 동일 패키지 내에서만 접근 가능
    • private : 동일 클래스에서만 접근 가능
  • getter & setter 메서드 : private 접근 제어자가 포함된 객체의 데이터 값을 수정하고 싶을 때 사용
    • set() : 외부에서 메서드에 접근하여 조건에 맞을 경우 데이터 값을 변경
    • get() : setter로 변경한 변수 값을 return
  1. 기타 정리한 것
  • 클래스를 만들 때는 가장 먼저 무엇을 객체(붕어빵)로 만들지 고려하기
  • command + N : IntelliJ에서 getter/setter 간편하게 만들 수 있는 단축키
  • super. 으로 상위 클래스 인스턴스 표시할 때, 상위 클래스의 필드 호출할 때 뿐만 아니라 상위 클래스의 메서드를 호출 할 때도 이렇게 사용해야 함. super.run() 이런 식으로...
  • super. 이후에 상속된 상황에 따라 여러 getter들을 이어서 붙일 수 있음. super.getCar().getName() 이런 식으로...
  • 캡슐화를 통해 관련 기능은 관련 클래스 내에서 모두 해결해야 한다. 하나의 클래스에서 관련 기능을 모두 해결하게 하여, 상속만 하면 되도록. 수정할 때도 하나의 클래스만 수정하면 되도록. ---> 객체의 자율성 증가 ---> 결합도 낮아짐(good)

<느낀 점>
파이썬 공부할 때도 상속에 대해 공부하긴 했었는데, 뭔가 더 디테일하게 들어가서인지 좀 어려웠다. 오후 줌 미팅 들으면서 생각보다 이해가 부족했다고 느꼈고, 그래서 추가적으로 정리한 것(3)이 꽤 많았다.
수요일에 개인 실습한다는데, 직접 해봐야 알 것 같다.

0개의 댓글