-
PolymorphismJAVA/in 기초 2014. 2. 3. 00:02728x90
다형성이란 하나로 여러가지 일을 하는 것을 이야기 한다.
상속과 관련된 다형성의 기법들
- 인터페이스(interface)
- 오버라이딩(Overriding)
- 추상 클래스(Abstract Class)
- 추상 메소드(Abstract Method)
- 다운캐스팅(Downcasting)
- 업케스팅(Upcasting)
*예를 들자면, 객체지향을 이야기 한다. 객체(Object)는 모든 형태로 변환(캐스팅)이 가능 하다
- Abstract Class & Abstract Method
추상 메소드- 메소드 몸체가 없는 메서드를 추상 메서드라고 한다.- 메소드 선언부에 abstract 키워드를 사용해야 한다.//일반 메소드 public void sayHello(){} //추상 메소드 public abstract void sayHi();
추상 클래스- 몸체 없는 메서드를 포함한 클래스를 추상 클래스라고 한다.- 클래스의 선언부에 abstract키워드를 사용해야 한다.//추상 클래스 public abstract class CallHello{ //추상 메소드 public abstract void sayHi(); }
추상 클래스 특징- 완전한 클래스가 아니기 때문에 추상 클래스를 이용해서 객체를 생성 할 수 없다.- 추상 클래스를 완전한 클래스로 만들기 위해서 상속의 기법을 이용해서 모든 추상 메소드를 구현 하면 된다.abstract 키워드- 추상 메소드는 메서드 앞부분에 abstract 키워드를 붙여야 한다.- 추상 메서드를 하나라도 포함하고 있다면 클래스 앞부분에 abstract 키워드를 붙여야 한다.* 추상 메소드를 포함 하지 않은 추상 클래스의 경우 무조건 상속받도록 하기 위해서 사용한다.- Interface
인터페이스란 골격만 가지고 있는 클래스를 이야기 한다.인터페이스 VS 추상 클래스 차이점- 추상 클래스는 일부분이 추상 메소드이다.- 인터페이스는 추상 메소드 만으로 이루어 진다.- 추상 클래스는 extends를이용해서 추상 메소드를 구현 한다.- 인터페이스는 inplements를 이용해서 추상 메소드를 구현한다.인터페이스 특징- 모든 메소드는 묵시적 public abstract이다.- 인터페이스는 객체를 생성 할 수 없다.- 인터페이스에서 멤버변수를 선언하면 기본으로 public static final(상수) 형식이 된다.자바의 다중 상속- 단일 상속을 기본으로 한다.- 변칙적으로 다중 상속을 지원하기 위해서 인터페이스를 이용한다.- 인터페이스는 기능적인 측면에서 순간적으로 구현해서 사용하기 때문에 복잡한 상속구조에 얽매이지 않는다.* 추후 디자인 패턴에서 알아보자.- Upcasting
특정 객체가 하위 클래스의 형에서 상위 클래스의 형으로 캐스팅 되는 것이며 형만 정확하다면 묵시적으로 캐스팅 된다.기본 데이터 타입의 캐스팅- 일반적으로 캐스팅의 기본 원리는 작은 것이 큰 것으로 되는 것이다.- 작은 크기의 데이터는 큰 크기의 데이터로 쉽게 들어 갈 수 있다.//자동 캐스팅 byte b = 12; int i = b; //오류 발생 int i = 200; byte b = i; //해결을 위해 강제로 캐스팅 한 경우 오버 플로우 발생 byte b = (byte)i;
많이 사용 되는 업캐스팅의 예- 상위 클래스로의 업캐스팅- 추상 클래스로의 업캐스팅- 인터페이스로의 업캐스팅업캐스팅시 주의 사항- 상위 클래스의 형에 존재하는 메소드만을 상위 클래스의 이름으로 호출 할 수 있다.- 하위 크래스에만 존재하는 메소드는 상위 클래스의 이름으로 호출 할 수 없다.인터페이스를 사용하는 목적- 자바의 인터페이스는 사용자와의 상호작용을 위해서 사용한다.- 사용자에게 인터페이스만 공개했을 때 해당 객체가 다양한 기능을 보유하더라도 인터페이스에 해당하는 기능만을 사용하게 할 수 있다.- 인터페이스로 작업을 제한했기 때문에 해당 객체를 잘못 사용할 오류를 막는다.- Downcasting
업캐스팅한 것을 다시 원래의 형으로 복원 시켜주는 작업다운캐스팅의 특징- 업캐스팅된 것만 다운 캐스팅 시킬 수 있다.- 다운 캐스팅은 강제 캐스팅을 원칙으로 한다.다운 캐스팅의 형 확인 방법
Top t = new Middle(); //다운 캐스팅 Middel m = (Middle)t; //instanceof 키워드를 이용한 다운 캐스팅 if(t instanceof Middel){//형확인 Middel m = (Middle)t; }else{ System.out.println("형이 맞지 않습니다."); }
* 여기까지 다형성에서 이용되는 기술에 대해 알아 보았습니다.
* 다음은 예제 입니다.
예제 내용 : 고객과 음식의 개념에서 다형성을 이용하여 샘플을 만들 었습니다.
예제 파일 :
728x90'JAVA > in 기초' 카테고리의 다른 글
Formatting 기능 (0) 2014.02.21 예외처리(Exception) (0) 2014.02.21 컬랙션(Collection)과 맵(Map) 계열 (0) 2014.02.21 Overloading, Constructor, Inheritance, Overriding, this, super (0) 2014.02.02 Java in Memory (0) 2014.01.19