11장 다형성과 추상 클래스, 인터페이스 Section 1 객체의 형 변환 Section 2 연산자 Section 3 다형성 11장 다형성과 추상 클래스, 인터페이스 Section 1 객체의 형 변환 Section 2 연산자 Section 3 다형성 Section 4 추상 클래스 Section 5 추상 클래스와 다형성 Section 6 인터페이스 Section 7 인터페이스와 다형성 1
학습 목표 다형성을 위한 객체의 형 변환에 대해 학습합니다. 연산자 instanceof에 대해 학습합니다. 다형성의 장점과 구현 방법을 학습합니다. 추상 클래스의 개념과 얻어지는 장점, 추상 클래스와 추상 메소드에 관해 학습합니다. 추상 클래스와 객체의 형 변환, 오버라이딩을 활용한 다형성을 학습합니다. 인터페이스의 개념과 상속, 사용 방법에 관해 학습합니다. 인터페이스를 활용한 다형성을 학습합니다.
상속된 관계에서 객체의 형 변환을 허용 1 객체의 형 변환 상속된 관계에서 상위 클래스 형의 객체 변수에 하위 클래스에서 생성된 객체의 배정을 허용 반대로 하위 클래스 형의 객체 변수에 상위 클래스에서 생성된 객체의 배정은 허용하지 않는다
1 객체의 형 변환
1 객체의 형 변환 예제 11.1
1 객체의 형 변환
1 객체의 형 변환
1 객체의 형 변환
instanceof 연산자 객체가 특정 클래스로부터 생성된 객체인지를 판별하여 true 또는 false값을 반환
2 연산자 instanceof
2 연산자 instanceof
2 연산자 instanceof
3 다형성 객체 지향에서 다형성은 “서로 다른 객체가 동일한 메시지에 대하여 서로 다른 방법으로 응답할 수 있는 기능”이라고 정의할 수 있다 다형성은 앞 장에서 기술한 상속과 객체의 형 변환, 메소드 오버라이딩을 통하여 구현될 수 있다.
3 다형성 다음 프로그램은 세 개의 클래스가 상속관계에 있으면서 하나의 속성과 하나의 메소드를 가지고 있습니다. 객체 지향 언어의 다형성(polymorphism)을 제공하는 예
3 다형성
3 다형성
3 다형성
4 추상 클래스 추상화는 복잡한 문제들 중에 공통적인 부분을 추출하여 추상 클래스로 제공하고, 상속을 이용하여 나머지 클래스들을 하위 클래스로 제공하는 기법
4 추상 클래스 추상화 클래스의 예
4 추상 클래스 추상화 클래스와 추상 메소드
4 추상 클래스 추상화 클래스와 추상 메소드의 예
추상 클래스와 추상 메소드의 오버라이딩을 이용하면 더욱 효율적인 다형성을 구현할 수 있다 5 추상 클래스와 다형성 추상 클래스와 추상 메소드의 오버라이딩을 이용하면 더욱 효율적인 다형성을 구현할 수 있다
5 추상 클래스와 다형성
5 추상 클래스와 다형성
5 추상 클래스와 다형성
5 추상 클래스와 다형성 예제 11.7
6-1 인터페이스 개요와 선언 인터페이스는 상수와 메소드 선언들만을 가진 클래스로 정의할 수 있다 6 인터페이스 6-1 인터페이스 개요와 선언 인터페이스는 상수와 메소드 선언들만을 가진 클래스로 정의할 수 있다 추상 클래스와 유사하지만, 인터페이스는 앞에서 배운 추상 클래스보다 더욱 완벽한 추상화를 제공 추상 클래스는 추상 메소드 외에 다른 멤버 변수나 일반 메소드를 가질 수 있지만, 인터페이스는 추상 메소드(메소드 선언만 있는)와 상수만을 가질 수 있다(단, JDK 1.8 버전 이후부터 인터페이스에 default 메소드와 static 메소드의 사용을 허용. default 메소드는 추상메소드가 아닌 일반 메소드로서 메소드 이름 앞에 default를붙여 사용하고, static 메소드는 클래스 메소드와 같은 의미) 인터페이스를 사용함으로써 완벽한 다중 상속은 아니지만 다중 상속을 흉내낼 수 있다
6 인터페이스 6-1 인터페이스 개요와 선언 인터페이스의 형식과 예
6 인터페이스 6-1 인터페이스 개요와 선언 인터페이스의 상속의 예
6-2 인터페이스의 사용 클래스에서 인터페이스를 사용하기 위해서는 implements 예약어 사용 6 인터페이스 6-2 인터페이스의 사용 클래스에서 인터페이스를 사용하기 위해서는 implements 예약어 사용 클래스가 인터페이스를 포함하면, 인터페이스에서 선언된 모든 메소드를 오버라이딩 해야 한다
6 인터페이스 6-2 인터페이스의 사용
6 인터페이스 6-2 인터페이스의 사용
6 인터페이스 6-2 인터페이스의 사용
인터페이스도 추상 클래스와 같이 다형성을 구현하는 데 사용될 수 있다 7 인터페이스와 다형성 인터페이스도 추상 클래스와 같이 다형성을 구현하는 데 사용될 수 있다 추상 클래스를 이용하여 다형성을 구현하는 것과 동일한 형태
7 인터페이스와 다형성
7 인터페이스와 다형성
학습 정리 객체의 형 변환 ① 상속 관계의 클래스로부터 생성된 객체들 사이의 형 변환을 허용합니다. ② 상위 클래스형으로 선언된 객체 변수에 하위 클래스로부터 생성된 객체를 배정할 수 있으며, 이 경우 상위 클래스에 선언된 요소만 접근이 가능합니다.
학습 정리 연산자 instanceof 다형성 ① 특정 클래스의 객체인지를 판별해 주는 이진 연산자입니다. 하위 클래스로부터 생성된 객체는 상위 클래스의 객체입니다. 그 이유는 하위 클래스로부터 생성된 객체는 상위 클래스의 모든 요소를 가지고 있기 때문입니다. ② Object 클래스는 자바의 최상위 클래스이기 때문에, 자바에서 사용되는 모든 객체는 Object의 객체입니다. 다형성 ① 상속, 객체의 형 변환, 오버라이딩을 이용하면 효율적인 다형성을 구현할 수 있습니다. ② 상위 클래스의 객체 변수에 하위 클래스로부터 생성된 객체를 배정하여, 메소드를 호출하면 하위 클래스에서 오버라이딩된 메소드가 수행됩니다.
학습 정리 추상 클래스 ① 추상 클래스는 하위 클래스에서 구현되는 추상적인 기능만을 정의하는 클래스로서 추상 메소드를 가지는 클래스입니다. ② 추상 클래스는 기능이 무엇what인지만 정의하고, 어떻게how 구현되어 있는지는 정의하지 않습니다. 어떻게 구현되었는지는 추상 클래스를 상속받는 하위 클래스에서 정의합니다. 추상 클래스와 다형성 ① 추상 클래스의 상속, 객체의 형 변환, 오버라이딩을 이용하면 효율적인 다형성을 구현할 수 있습니다.
학습 정리 인터페이스 ① 인터페이스는 상수와 메소드 선언들의 집합입니다. 인터페이스는 추상 메소드와 상수만으로 구성된 추상 클래스라 할 수 있습니다. ② 인터페이스의 개념을 이용하여 다중 상속의 개념을 구현할 수 있습니다. ③ 인터페이스를 포함하려면 implements 예약어를 사용합니다. ④ 인터페이스에 선언된 모든 메소드는 오버라이딩하여 구현하여야 합니다. 클래스를 생성할 때 다수 개의 인터페이스를 포함할 수 있으며, 이 경우에 모든 인터페이스에서 선언된 모든 메소드를 오버라이딩 해야 합니다. ⑤ 인터페이스들은 상속된 계층 구조를 이룰 수 있으며, 상속된 인터페이스를 포함하는 클래스는 관련된 모든 메소드를 오버라이딩 해야 합니다.
수고하셨습니다. 제출 연습 문제를 잘 풀어서 제출해주시기 바랍니다 (다음 주 제출 문제 발표는?) 수고하셨습니다. 제출 연습 문제를 잘 풀어서 제출해주시기 바랍니다 (다음 주 제출 문제 발표는?) 41