[Section 1] Java 객체지향 프로그래밍 심화(1)

현이·2023년 2월 27일
0

백엔드 부트캠프 TIL

목록 보기
10/37
post-thumbnail

사진은 베르사유 그랑 트리아농 외관 - 제일 멀어서 포기할까 생각했는데 궁전이 너무 예뻐서 오길 잘했다는 생각이 들었다

자바에서 제일 어려워하는 부분이던 상속/캡슐화를 배웠다. 항상 개념볼때까진 이해할만 하다가 여러 복잡한 코드의 경우들을 보면 다 꼬여서 힘들었는데, 오늘은 다시 쉽게 생각하고 반복을 거쳐서 그런가 할만 했던 것 같다. 실제 코드에서 쓸 수 있을지는 모르겠어서 연습이 필요할듯!




상속(Inheritance)

  • 기존의 클래스를 재활용하여 새로운 클래스 작성
  • 하위 클래스는 상위 클래스의 모든 멤버 상속받음
  • extends 키워드
  • 다형적 표현 가능하게 함
  • Java는 다중 상속❌

포함(Composite) 관계

  • 클래스의 멤버로 다른 클래스의 참조 변수 선언

    상속 : IS-A 관계
    포함 : HAS-A 관계


메서드 오버라이딩(Method Overriding)

  • 상위 클래스의 메서드와 동일한 이름의 메서드를 재정의해서 덮어씌우는 것

    메서드 오버라이딩 조건
    1. 메서드의 선언부(메서드 이름, 매개변수, 반환타입)이 상위클래스와 완전 일치
    2. 접근 제어자의 범위가 상위 클래스의 메서드보다 같거나 넓어야 한다.
    3. 예외는 상위 클래스의 메서드보다 많이 선언할 수 없다.


super 키워드

  • 상위 클래스 객체 멤버 참조 시 사용

super() 메서드

  • 상위 클래스의 생성자 호출
  • this()와 마찬가지로 생성자 안에서만 호출 가능, 블럭 안 첫 줄에서 호출
    ❗모든 생성자 첫 줄에는 꼭 this() or super() 선언해야됨
    -> 상위 클래스에 기본 생성자 없으면 에러

Object 클래스

  • Java의 모든 클래스는 Object 클래스로부터 확장됨
  • e.g. toString(), equals(Object obj), hashCode(), etc



캡슐화(Encapsulation)

  • 객체의 속성과 기능을 하나의 캡슐로 묶어서 데이터 보호
  • 사용 이유
    1.데이터 보호
    2.데이터의 불필요한 노출 방지

패키지(package)

  • 특정 목적의 클래스와 인터페이스의 묶음
package practicepack.test; //패키지 선언
  • import 문 으로 패키지 사용
  • 클래스의 충돌 방지

접근 제어자

  • public(접근 제한 없음) > protected(동일 패키지 + 하위클래스) > default(동일 패키지) > private(동일 클래스)

getter 와 setter 메서드

  • setter 메서드로 데이터 값 변경 e.g. setName()
  • getter 메서드로 데이터 값 불러오기 e.g. getName()

=> 데이터 보호, 은닉하면서 변경 가능

0개의 댓글