[멘토씨리즈 자바] 12 추상클래스와 인터페이스 응용문제

2024. 7. 24. 20:44·책/멘토씨리즈 자바

1. 다음 빈칸에 알맞은 단어를 작성해 보세요.

  • 구현 내용이 없이 비어있는 메서드를 [             ] (이)라고 부릅니다.
  • 위 메서드를 선언할 때는 [           ] 키워드를 사용해야 합니다.
  • 이러한 메서드를 1개 이상 가지고 있는 클래스를 [               ] 클래스라고 부릅니다.
더보기

추상 메서드, abstract, 추상 클래스

2. 다음 코드는 컴파일 에러가 발생합니다. 컴파일 에러가 발생하는 곳을 모두 찾아 수정해 보세요.

package section12;
 
abstract class Bike {
    int wheel;
 
    Bike(int wheel) {
        this.wheel = wheel;
    }
 
    void info() {
        System.out.println("이 자전거는 " + wheel + "발 자전거입니다.");
    }
}
 
class ChildBike extends Bike {
    ChildBike(int wheel) }
    }
}
class PRACTICE_12_02 {
    public static void main(String[] args) {
        Bike b = new Bike(2);
 
        ChildBike cb = new ChildBike(4);
        cb.info();
    }
}

답 )

package section12;

abstract class Bike {
    int wheel;

    Bike(int wheel) {
        this.wheel = wheel;
    }

    void info() {
        System.out.println("이 자전거는 " + wheel + "발 자전거입니다.");
    }
}

class ChildBike extends Bike {
    ChildBike(int wheel) {
        super(wheel); // 부모 클래스인 Bike의 생성자 호출
    }
}

public class PRACTICE_12_02 {
    public static void main(String[] args) {
        // 추상 클래스인 Bike는 직접 인스턴스화할 수 없음
        // Bike b = new Bike(2); // 주석 처리

        ChildBike cb = new ChildBike(4); // ChildBike 클래스의 인스턴스 생성
        cb.info(); // ChildBike 클래스의 info() 메서드 호출
    }
}

 

3. 다음 문장이 맞으면 O표, 틀리면 X표 하세요.

  • 추상 클래스는 자식 클래스들이 상속(extends)받아 구현합니다. 
  • 인터페이스는 다른 클래스 코드들과의 사이에서 중간 매개체 역할을 합니다.
  • 인터페이스 안에서 상수를 선언할 때, final을 명시하지 않으면 syntax error가 발생합니다.
  • 추상클래스와 인터페이스의 추상 메서드는 구현부가 있으면 안됩니다.
  • 클래스 간 다중 상속이 불가능한 것처럼 인터페이스도 다중 상속이 불가능합니다.
더보기
  • 추상 클래스는 자식 클래스들이 상속(extends)받아 구현합니다.  - O
  • 인터페이스는 다른 클래스 코드들과의 사이에서 중간 매개체 역할을 합니다. O 
  • 인터페이스 안에서 상수를 선언할 때, final을 명시하지 않으면 syntax error가 발생합니다. X (발생하지 않음)
  • 추상클래스와 인터페이스의 추상 메서드는 구현부가 있으면 안됩니다. O
  • 클래스 간 다중 상속이 불가능한 것처럼 인터페이스도 다중 상속이 불가능합니다. O (단, 인터페이스 간에는 다중상속 가능)

 

4. 2번 예제 코드에서 Bike 클래스 안에 아래 메서드를 추가했습니다. ChildBike 클래스를 어떻게 수정해야 할까요?

abstract int getWheel();

 

더보기

ChildBike 클래스는 추상 메서드인 getWheel()을 구현해야 

수정된 ChildBike 클래스는 다음과 같이 추상 메서드인 getWheel()을 구현해야 함


/*
ChildBike 클래스는 추상 메서드인 getWheel()을 구현해야 

수정된 ChildBike 클래스는 다음과 같이 추상 메서드인 getWheel()을 구현해야 함
*/

class ChildBike extends Bike {
    ChildBike(int wheel) {
        super(wheel); // 부모 클래스인 Bike의 생성자 호출
    }

    @Override
    int getWheel() {
        return wheel; // Bike 클래스의 멤버 변수 wheel을 반환
    }
}

 

5. 인터페이스를 사용함으로써 다음과 같은 객체 지향의 특징을 가질 수 있습니다. 각 용어의 개념에 대해 이해하고 있는 것을 같략히 서술해 보세요.

 

  • 정보은닉 : 객체의 내부 상태(데이터 필드)를 외부로부터 숨기고, 오직 객체가 제공하는 메서드를 통해서만 데이터에 접근할 수 있도록 하는 것이다. 주로 접근 제어자(private, protected, public 등)를 사용하여 구현다.
  • 모듈화 : 소프트웨어 설계의 한 방법으로, 큰 프로그램을 작은 독립적인 모듈(부분)로 나누는 것을 의미한다. 각각의 모듈은 특정 기능을 수행하며, 필요한 경우 다른 모듈과 상호작용한다. 모듈화는 소프트웨어를 보다 이해하기 쉽고, 유지보수가 용이하도록 만든다.

'책 > 멘토씨리즈 자바' 카테고리의 다른 글

[멘토씨리즈 자바] 14 예외 처리 응용문제  (0) 2024.07.29
[멘토씨리즈 자바] 13 내부클래스 응용문제  (0) 2024.07.29
[멘토씨리즈 자바] 11 다형성과 타입 변환 응용문제  (2) 2024.07.23
[멘토씨리즈 자바] 10 상속 응용문제  (0) 2024.07.22
[멘토씨리즈 자바] 09 생성자  (0) 2024.07.22
'책/멘토씨리즈 자바' 카테고리의 다른 글
  • [멘토씨리즈 자바] 14 예외 처리 응용문제
  • [멘토씨리즈 자바] 13 내부클래스 응용문제
  • [멘토씨리즈 자바] 11 다형성과 타입 변환 응용문제
  • [멘토씨리즈 자바] 10 상속 응용문제
yn98
yn98
좌우명 : 여전할 것 인가, 역전할 것 인가? 백엔드 개발자가 되고싶은 역전하고 있는 개발자 꿈나무의 블로그입니다. 개발을 하면서 공부한 것들을 기록합니다. 24.06 ~
  • yn98
    개발 꿈나무
    yn98
  • 전체
    오늘
    어제
    • 분류 전체보기 (131)
      • Python (3)
      • 공부 (7)
      • DB (7)
      • JAVA (24)
      • JSP (9)
      • jQuery (2)
      • HTML (3)
      • Spring (20)
      • 웹 (4)
      • C (1)
      • Git (2)
      • 에러일기 (19)
      • 프로젝트 (6)
      • 책 (21)
        • 멘토씨리즈 자바 (14)
        • 2024 수제비 정보처리기사 (7)
      • 기타 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
    • Notion
  • 공지사항

  • 인기 글

  • 태그

    recoverabledataaccessexception
    aop
    스프링 프레임워크
    Spring
    2-layered 아키텍처
    어노테이션
    정보처리기사 실기
    객체지향
    jsp
    java
    정처기 실기
    멘토씨리즈 자바
    @repository
    이벤트 스케줄러
    정처기
    codeup 4891 : 행복
    @service
    Di
    상속
    정보처리기사
    ViewResolver
    @Component
    html
    수제비
    생성자
    DispatcherServlet
    티스토리챌린지
    오블완
    오버로딩
    MVC
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
yn98
[멘토씨리즈 자바] 12 추상클래스와 인터페이스 응용문제
상단으로

티스토리툴바