[혼공자][week4] Day14 추상 클래스 (추가숙제 포함)

Ida·2025년 2월 10일
0

혼공자

목록 보기
15/20

07-3 추상 클래스

  • 실체 클래스: 객체를 직접 생성할 수 있는 클래스
  • 추상 클래스: 클래스들의 공통적인 특성(필드, 메소드)을 추출해서 선언한 클래스

1. 추상 클래스 용도

  • 공통된 필드와 메소드의 이름을 통일할 목적
    데이터와 기능이 동일하지만 이름이 다르면 객체별 사용법이 달라질 수 있음. 여러명이 실체 클래스 설계할 때 동일한 이름의 필드와 메소드를 사용할 수 있도록 함.
  • 실체 클래스 작성 시 시간 절약
    공통적인 필드와 메소드는 추상 클래스에 선언하고 다른 점만 실체 클래스에 선언하면 시간 절약 가능.

2. 추상 클래스 선언

추상 클래스 선언 시 abstract키워드 사용

  • new 연산자로 객체 생성 X
  • 상속을 통해 자식 클래스만 생성 가능

추상 클래스 Phone 선언 (손코딩)


public abstract class Phone{}으로 추상 클래스 선언

실체 클래스 SmartPhone 선언 (손코딩)


추상 클래스 Phone을 상속하는 자식 클래스 SmartPhone 선언.
super(owner); 코드로 Phone의 생성자 호출

실행 클래스 PhoneExample (손코딩)


자식 클래스인 SmartPhone으로 객체 생성 후 Phone 클래스의 메소드 사용 가능

  • 추상 클래스는 객체를 직접 생성할 수 없음

3. 추상 메소드와 재정의

abstract 키워드와 함께 메소드 선언부만 있고 실행내용인 중괄호가 없는 메소드.

  • 추상 메소드는 선언만 통일하고 실행 내용은 실체 클래스마다 달라야하는 경우에 사용
  • 하위 클래스가 반드시 실행 내용을 채우도록 강제하고 싶은 메소드가 있을 때 추상 메소드로 선언
  • 자식 클래스에서 반드시 추상 메소드 재정의 해서 실행 내용 작성

추상 메소드 sound() 선언 (손코딩)

동물은 소리를 내는 공통적인 특징이 있지만, 소리가 같지 않음.
공통되는 "소리 낸다"는 특징만 규정하기 위해 추상 메소드 선언

추상 메소드 재정의 (손코딩)

자식 클래스에서 추상 메소드 재정의 안 하면 오류 발생
강아지와 고양이 울음 소리에 맞게 sound() 메소드 재정의함.

실행 클래스 AnimalExample (손코딩)

  1. Dog와 Cat 호출 후 sound() 메소드 실행
  2. Animal 변수로 타입 변환 후 sound() 메소드 호출. 다형성 특지 적용됨.(메소드 재정의 시 재정의된 자식 메소드가 호출됨)
  3. 부모 타입의 매개 변수에 자식 객체 대입한 메소드 다형성

추가숙제) 확인문제 3번

HrrpServelt이라는 추상 클래스를 실행하면 "로그인 합니다.", "파일 다운로드 합니다."가 차례대로 출력되도록 LoginServlet과 FileDouwnloadServlet 클래스 선언

  • 추상 클래스 HttpServlet, 추상 메소드 service() 선언
    실행 내용이 클래스별로 다르기 때문에 추상 메소드 사용

  • 자식 클래스 선언, service() 메소드 재정의
    LoginServlet: "로그인합니다."가 출력 되도록
    FileDownloadServlet: "파일 다운로드합니다."가 출력 되도록
    * 자식 클래스에서 추상 메소드 재정의하지 않을 시 오류 발생

  • 실행 클래스 선언, 메소드 다형성 적용
    부모 타입 배개 변수에 자식 객체 대입. 자식 객체가 부모 타입으로 자통 타입 변환되어 재정의된 메소드 호출됨.

profile
나는 이다이다.

0개의 댓글

관련 채용 정보