- 다형성이란?
- 부모-자식 상속 관계에 있는 클래스에서 상위 클래스가 동일한 메시지로 하위 클래스들을 서로 다르게 동작시키는 객체 지향 원리
- 다형성을 활용하면 부모 클래스가 자식 클래스의 동작 방식을 알수 없어도 오버라이딩을 통해 자식 클래스를 접근할 수 있다.
- 아래가 되지 않는 이유에 대하여 메모리 그림으로 설명하시오.
SmartPhone ph2 = new MobilePhone();

- 메소드 오버라이딩(Overriding) 이란?
- 상속관계에서 똑같은 함수(이름, 리턴타입, 파라미터개수와 종류)로 바디{}(실행내용)만 달리하는 것
- 오버라이딩은 자식꺼
4.interface 와 class 의 차이는?
- 인터페이스 안에 올 수 있는 것은 함수구현(X) -> 추상메소드와 상수만 올 수 있다.
- 클래스는 모든 변수와 메소드가 올 수 있다.
- 다음을 프로그램 하시오.[필수] ⭐️
interface Printable { // MS가 정의하고 제공한 인터페이스
public void print(String doc);
}
//SamsungPrinter 와 LGPrinter 만드시오
public static void main(String[] args) {
String myDoc = "This is a report about...";
// 삼성 프린터로 출력
Printaable print = new SamsungPrinter();
print.print(myDoc);
System.out.println();
// LG 프린터로 출력
print = new LGPrinter();
print.print(myDoc);
출력:
From Samsung Printer
This is a report about...
From LG Printer
This is a report about...



- @Override 에 대하여 설명하시오.
- 해당 메소드가 부모 클래스에 있는 메서드를 Override 했다는 것을 명시적으로 선언한다. 가령 어노테이션을 사용하지 않으면 자식 클래스에 여러 개의 메소드가 있을 경우, 어떤 메소드가 Override 되었는지 쉽게 알기 어렵다. 이 때, 오버라이드 메소드를 사용하여 명시적으로 선언하게 되면 많은 메소드 중에서 어떠한 메소드가 부모 클래스로부터 오버라이딩이 되었는지 쉽게 파악할 수 있다. 또한 오버라이드 된 사실을 컴파일러에게 명시시켜준다.
- interface에 올 수 있는 두 가지는?
- abstract 키워드에 대하여 설명하시오.
- 메소드에 구현부가 없다는 것을 알려준다.
- interface에 메소드 작성 시 입력하지 않을 경우 컴파일러가 자동으로 abstract를 입력해준다.