내가 개발해볼게!!

Do it! 자바 프로그래밍 입문 6일차 본문

Language/Java

Do it! 자바 프로그래밍 입문 6일차

보송송희 2022. 6. 20. 17:30

교재 맨앞쪽 진도표에 나와 있는 15일 코스로 공부하고 있습니다!!

Do it! 자바 프로그래밍 입문 6일차
08 상속과 다형성
- 08-1 상속이란?
- 08-2 상속에서 클래스 생성과 형 변환
- 08-3 메서드 오버라이딩
- 08-4 다형성
- 08-5 다형성 활용하기
- 08-6 다운 캐스팅과 instanceof

  08장 상속과 다형성

  • 상속에 대해 배웠습니다.

상속은 객체 지향 프로그래밍의 기반이 되는 기술입니다. A 클래스에 B 클래스를 상속시키면 B 클래스에서도 A 클래스의 멤버 변수와 메서드를 사용할 수 있는데, 이때 A 클래스를 부모 클래스, B 클래스를 자식 클래스라고 부릅니다.

상속을 구현하기 위해 extends 예약어를 사용합니다. extends는 class B extends A { }의 형태로 사용합니다. 

예제에서는 고객 관리 프로그램을 구현하기 위해 Customer 클래스를 만들고 VIP 고객을 따로 관리하기 위해 Customer 클래스를 상속받은 VIPCustomer 클래스를 만들었습니다. Customer 클래스에서 고객 관련 멤버 변수들을 외부에 노출시키지 않기 위해 private로 선언했는데, 이렇게 되면 외부 클래스인 VIPCustomer 클래스에서 멤버 변수들을 사용할 수 없습니다.

위 문제를 해결하기 위해 Customer 클래스를 조금 수정했습니다. private로 선언된 멤버 변수들을 protected 예약어로 수정했는데, protected로 선언된 변수들은 하위 클래스에서는 public처럼 사용되고 외부에서는 private처럼 사용됩니다. 

 

Customer 클래스와 VIPCustomer 클래스를 사용한 프로그램입니다.

 

  • 상속에서 클래스 생성과 형 변환에 대해 배웠습니다.

하위 클래스가 생성될 때 상위 클래스의 생성자가 먼저 호출됩니다. 

하위 클래스에서 상위 클래스로 접근할 때 super 예약어를 사용합니다. super가 상위 클래스를 가리킵니다. 

모든 하위 클래스는 상위 클래스 자료형으로 형변환이 가능하지만, 상위 클래스를 하위 클래스 자료형으로 변환하는 것은 불가능합니다. 하위 클래스가 상위 클래스 자료형으로 형 변환이 되는 과정은 묵시적으로 이루어집니다. 변수에서 Ctrl + Spacebar를 누르면 변수가 접근할 수 있는 변수와 메서드가 나옵니다. 

 

  • 메서드 오버라이딩에 대해 배웠습니다.

메서드 오버라이딩은 상위 클래스에서 정의한 메서드에 대해 하위 클래스에서 재정의하는 것입니다. 오버라이딩을 할 때 반환형, 메서드 이름, 매개변수의 개수와 자료형이 반드시 같아야 합니다. 

Customer 클래스의 calcPrice() 메서드를 VIPCustomer 클래스에서 재정의한 것입니다. 오버라이딩 시 메서드를 코드에 직접 작성하거나, 이클립스에서 Source - Override/Implement Methods… 기능을 사용할 수 있습니다.

가상 메서드는 인스턴스의 메서드가 호출되는 기술입니다. 

 

  • 다형성에 대해 배웠습니다.

다형성하나의 코드가 여러 자료형으로 구현되어 실행되는 것입니다.  다형성은 추상 클래스, 인터페이스에서 구현됩니다. 다형성을 잘 활용하면 프로그램의 확장이 용이합니다. 

 

  • 다운 캐스팅에 대해 배웠습니다.

다운 캐스팅은 상위 클래스로 형 변환된 하위 클래스를 다시 원래 자료형으로 형 변환하는 것입니다. 다운 캐스팅을 하기 전에 상위 클래스로 형 변환된 인스턴스의 원래 자료형을 확인해야 되는데, 이를 위해 instanceof 예약어를 사용합니다.