다형성(1)

최지홍·2022년 1월 21일
0

매일 공부

목록 보기
7/40

상속(is-a)

  • 기존 클래스의 자산(멤버)을 자식 클래스에서 재사용(생성자, 초기화 블록 제외)
  • 부모 코드 변경 👉 자식에게도 영향
  • 모든 클래스의 조상 클래스: Object
  • 상속: is-a 관계
  • 자바는 단일 상속
  • 포함: has-a 관계
  • 코드 절감

포함(has-a)

  • 상속 이외에 클래스를 재활용하는 방법
  • 멤버변수로 주로 포함

오버라이딩

  • 조상 클래스에 정의된 메서드를 자식 클래스에서 적합하게 수정
  • 조상 메서드를 자식에 적합하게 수정(자식꺼만 남음)
  • 메서드 이름 동일
  • 매개변수 개수, 타입, 순서가 같아야함
  • 같은 리턴 타입
  • 접근 제한: 부모와 같거나 넓게
  • 조상보다 더 큰 예외 못던짐

Annotation

  • 주석. 컴파일러, JVM, 프레임워크 등이 보는 주석
  • 소스코드의 라벨. 메타 데이터
  • this.: 자신의 멤버
  • super.: 부모의 멤버
  • this()와 super() 동시 사용 불가: 둘 다 첫줄에 위치

toString()

  • 객체를 문자열로 변경

equals()

  • 두 객체가 같은지 비교(같은 레퍼런스)

hashCode()

  • 시스템에서 객체를 구별하기 위해 사용되는 정수 값

super 키워드

  • this를 통해 멤버에 접근했듯 super를 통해 조상 클래스 멤버에 접근
  • super.을 통해 조상 메서드 호출

변수 호출 순서

  • 지역 변수 → 해당 클래스 멤버 변수 → 조상 클래스 멤버 변수

super()

  • 조상 클래스의 생성자 호출
  • 생성자 첫 줄에 위치해야함

import

  • 다른 패키지의 클래스 사용

제한자(modifier)

  • 클래스, 변수, 메서드 선언부에 함께 사용되어 부가적 의미 부여
  • 접근제한자: public, protected, default, private

final: 마지막. 더 이상 바뀔 수 없음

final class: 상속 방지 👉 오버라이딩 방지

final method: 오버라이딩 방지

final variable: 더 이상 바꿀 수 X

캡슐화

  • private으로 변수 접근 막음
  • getter/setter 생성

생성자

  • 인스턴스 변수 초기화. 강제 호출 불가. 상속되지 않음
  • 부모 클래스: 공통을 만듦
  • extends: 확장
  • this: 객체의 주소를 가짐. 각 메서드마다 this가 전달됨

싱글톤

  • 객체를 하나만 생성 👉 수정 가능한 멤버가 없고, 기능만 있는 경우(stateless)
  • 외부에서 생성자 접근을 막음 → 생성자를 private으로
  • getInstance() 등의 getter 메서드로 외부에서 객체를 받을 수 있도록 처리
  • 객체 생성 없이 접근을 가능하게 하기 위해 getter 메서드와 클래스 내부에 생성된 멤버 변수를 static으로 설정
  • 외부에서는 언제나 getter를 통해 객체를 참조하므로 하나의 객체를 재사용

다형성

  • 하나의 객체가 많은 형을 가질 수 있는 성질
  • 조상 클래스의 타입으로 자식 클래스 객체를 참조
    • 활용1: 다른 타입의 객체를 다루는 배열
    • 활용2: 매개변수의 다형성
  • 형변환: instanceof 를 통해 타입을 확인한 후.
    • 참조하는 객체의 클래스 확인
profile
백엔드 개발자가 되자!

0개의 댓글