객체지향 프로그래밍 복습

Rina's·2023년 4월 30일

코드스테이츠

목록 보기
82/96

상속

Q. 상속이 필요한 이유를 설명할 수 있다.

A.
하위클래스가 상위클래스를 상속함으로서 상위클래스의 기능까지 확장할 수 있다

-코드의 재사용성을 높힐 수 있다 즉 코드 중복을 줄여준다
-코드의 가독성을 높힌다
-객체간 계층구조 표현에 유용하며 이를 통한 유지보수성도 향상된다

Q. extends 키워드를 활용하여 상속을 구현할 수 있다.

A.
class Cat extends Animal {}
class Animal {}
abstract클래스나 interface상속시 반드시 미구현 부분을 오버라이딩 하여 구현해야 한다

Q. 포함관계와 상속의 차이를 설명할 수 있다.

A.

포함은 동등한 계층의 클래스 끼리의 사용, 상속은 상하의 포함관계

-클래스가 다른클래스의 인스턴스를 맴버변수로 사용하는것
-부모클래스가 자식클래스를 물려받는것

Q. super와 super()의 차이와 역할을 설명할 수 있다.

A.
super는 상위 객체를 호출하는 키워드
super()는 상위 생성자를 호출하는 키워드

캡슐화

Q. 캡슐화가 무엇인지 설명할 수 있다.

A.
접근제어자와 getter, setter를 사용하여 직접적인 접근을 막아 데이터를 보호하고 은닉 하는것
-객체의 속성과 기능을 하나로 묶고, 외부에서의 접근을 제어하는 것
-내부의 상태를 보호하고 의존성을 줄이며 불필요한 변화를 방지해 유지보수성을 높힘

Q. 각 접근 제어자의 접근 허용 범위를 설명할 수 있다.

A.
private 같은클래스
default 같은패키지
protected 같은패키지와 하위클래스
public 모든클래스

Q. private 키워드와 Getter와 Setter를 조합하여 사용할 수 있다.
A.


public class Main {
    public static void main(String[] args) {
        Drive drive = new Drive("four");
        drive.getEngine();
        drive.setEngine("five");
        drive.getEngine();
    }
}

class Drive {

    String engine;
    public Drive(String engine) {
        this.engine = engine;
    }
    public String getEngine() {
        System.out.println("engine :"+ engine);
        return engine;
    }
    public void setEngine(String engine) {
        System.out.println("change engine: "+ this.engine + "->" + engine);
        this.engine = engine;
    }
}

다형성

Q. 다형성이 무엇인지 설명할 수 있다.

A.
하위클래스의 객체를 상위클래스 매개변수로 호출할 수 있게 함
-같은 코드가 여러 상황에서 다르게 동작하는 능력
-오버로딩 : 같은 이름의 다른시그니처 메서드 생성
-오버라이딩 : 하위클래스내의 메서드의 재 정의
-상속관계의 타입생성, 형변환을 통한 사용

Q. 어떤 경우에 다운캐스팅이 필요한지 설명할 수 있다.

A.
업캐스팅 되있는 객체를 다시 자손클래스로 다운캐스팅하여
자손의 맴버를 사용할 수 있도록 함
-상위 타입으로 선언된 객체를 하위 타입으로 형변환하여 하위 클래스에서 추가로 정의된 메서드나 멤버 변수에 접근하기 위해 사용

Q. insantceof 연산자의 기능을 설명할 수 있다.

A.
형변환 가능여부 확인

추상화

Q.추상화가 무엇인지 설명할 수 있다.

A.
클래스의 공통속성, 기능을 뽑아내는것

-객체들 간의 공통점을 찾아서 이를 하나의 개념으로 모델링하는 것

Q.추상 클래스가 무엇인지 설명할 수 있다.

A.
추상메서드를 하나 이상 포함하는 미완성 클래스, 미완성 설계도

Q.인터페이스가 무엇인지 설명할 수 있다.

A.
추상클래스와 상수만을 포함한 밑그림

Q.인터페이스를 사용할 때의 장점을 설명할 수 있다.

A.
다중상속이 가능, 코드의 중복을 줄이고 유지, 보수를 간편하게 해줌

-다중상속 가능, 결합도 감소, 유연성 증가, 표준화(일정한 규칙), 가독성 증가

Q. 추상 클래스와 인터페이스의 차이점을 설명할 수 있다.

A.
추상클래스는 단일상속, 인터페이스는 다중상속
추상클래스는 추상메서드를 한개 이상 가짐, 인터페이스는 모든메서드가 추상클래스
추상클래스는 생성자를 가질 수 있음
추상클래스는 인스턴스변수를 가질 수 있지만 인터페이스는 상수와 스태틱 변수만 가능

Q. 추상화와 다형성의 관계를 설명할 수 있다.

A.
추상화를 통해 만들어진 상위클래스, 이를 형변환을 통해 목적에 맞는 객체 접근, 수정이 가능하다

-추상화를 통해 만들어진 상위 개념으로부터 하위 객체들을 다형성을 이용해 다룰 수 있으며, 이를 통해 유연하게 객체들을 활용할 수 있습니다.

profile
갭린이 리나

0개의 댓글