본문 바로가기
Java

자바 요약 정리 - 다형성

by sycareer 2021. 7. 6.

6. 다형성

- 하나의 메소드나 클래스가 있을 때 이것들이 다양한 방법으로 동작하는 것.

- 클래스 extends (하나만 상속가능)

- 인터페이스 implements (여러 개 적을 수 있음)

 

- 인터페이스 : 미완성 메소드와 모든 클래스에서 공용으로 사용할 상수들을 한데 묶어놓은 추상전용 클래스

                      클래스로부터 상속받을 수 없고 같은 인터페이스끼리만 상속이 가능

                      *기본설계도.

 

- 인터페이스 특징

           1. 모든 인터페이스의 메소드는 묵시적으로 public abstract 이다.

           2. 필드는 묵시적으로 public static final 이다.

           3. 객체 생성은 하지 못하지만, 참조형 타입으로서는 사용 가능하다.

           * 같은 인터페이스끼리는 상속 가능함.

 

- 인터페이스 장점

           1. 개발시간을 단축할 수 있다.

           2. 변경에 유리한 유연한 설계가 가능하다.

           3. 표준화가 가능하다.

 

- 다운캐스팅 : 부모클래스를 자식클래스 형으로 형변환

 

- 추상클래스 : 미완성 클래스. 추상메소드를 포함한 클래스(일반필드 + 일반메소드 + [추상메소드])

                      -> 추상메소드를 가진 클래스는 반드시 추상클래스로 명시해야함.

                      -> 미완성 클래스이기 때문에 new라는 연산자 통해 생성 불가능

                      -> , 레퍼런스(참조형 변수타입)으로는 사용 가능

                      -> 몸통부({ })가 구현되어 있지 않은 메소드

                      -> 추상클래스를 상속받은 자식 클래스에서 반드시 오버라이딩 해야함

                                 - 메소드 사용의 통일성 확보 목적. 표준화된 틀을 제공할 목적으로 사용.

                      - 미완성된 추상메소드가 있다는 것은 해당 클래스 또한 미완성 클래스라는 것.

                      *미완성 설계도. 상속을 통해서 자손 클래스에서 완성하도록 유도하는 것.

*상속을 위한 클래스이기 때문에 따로 객체를 생성할 수 없음.

 

- 추상클래스와 인터페이스 비교

특징 추상클래스 인터페이스
상속 단일 상속 다중 상속
키워드 Extends Implements
abstract메소드 0개 이상 존재 모든 메소드가 abstract
Abstract 명시적으로 abstract 사용 묵시적으로 abstract
가질 수 있는 것 일반 필드(변수 + 메소드)
 + 추상메소드
Only 상수 필드, 추상메소드
사용의도 Is A : ~이다 Has A : ~을 할 수 있는

           *추상클래스 사용 시기 : 상속 관계를 쭉 타고 올라갔을 때 같은 조상클래스를 상속하는데

기능까지 완벽히 똑같은 기능이 필요한 경우

           *인터페이스 사용 시기 : 상속 관계를 쭉 타고 올라갔을 때 다른 조상클래스를 상속하는데

같은 기능이 필요할 경우 인터페이스 사용

 

- 바인딩 : 프로그램 구성 요소의 성격을 결정해주는 것.

함수를 호출하는 부분에 함수가 위치한 메모리 번지로 연결시켜주는 것.

https://secretroute.tistory.com/entry/140819

 

           - 정적 바인딩 : 컴파일 시간에 변수의 크기를 정할 수 있는 것

                      -> 컴파일 시간에 많은 정보가 결정되므로 실행 효율이 높음.

           - 동적 바인딩 : 프로그램이 실행되어야 메모리에 크기가 얼마나 할당되는지 알 수 있는 것

                      -> 런타임에 자유롭게 성격이 바뀌므로 적응성이 높음.

           - 바인딩 성립요건 : 상속 관계로 이루어져 다형성이 적용된 경우, 메소드 오버라이딩이 되어 있으면

                               정적으로 바인딩 된 메소드 코드보다 오버라이딩 된 메소드 코드를 우선적으로 수행

'Java' 카테고리의 다른 글

자바 요약 정리 - 컬렉션  (0) 2021.07.08
자바 요약 정리 - API  (0) 2021.07.06
자바 요약 정리 - 상속  (0) 2021.07.06
자바 요약 정리 - 객체  (0) 2021.07.06
자바 요약 정리 - 제어문  (0) 2021.07.06