다형성

- 같은 타입이지만 실행 결과가 다양한 객체를 이용할 수 있는 성질. 코드 측면에서 보면 하나의 타입에 여러 객체를 대입함으로써 다양한 기능 이용할 수 있게 해줌


 -부모 클래스로 타입 변환 가능 -> 부모 타입에 모든 자식 객체가 대입 될 수 있음
   ex) public class car {                               //Tire : 부모 클래스
              Tire t1 = new Hankook();              //자식 타입이 부모 타입으로 자동 타입 변환
              Tire t2 = new Kumho();
         }

 

- 타입 변환 : 데이터 타입을 다른 데이터 타입으로 변환하는 행위, 자식 타입은 부모 타입으로 자동 타입 변환이 가능 

- 자동 타입 변환 : 프로그램 실행 도중에 자동적으로 타입 변환이 일어나는 것

                       부모 클래스 변수 = 자식 클래스 타입();

                        -> 자식은 부모의 특징과 기능 상속받기 때문에 부모와 동일하게 취급될 수 있

ex) Cat cat = new Cat(); Animal animal = cat; -> Animal animal = new Cat();

이렇게 부모 타입으로 자동 타입 변환되면 부모 클래스에 선언된 필드와 메소드만 접근 가능
 but, 메소드가 자식 클래스에서 오버라이딩되었다면, 자식 클래스의 메소드가 대신 호출 --> 다형성과 관련

 


 


- 강제 타입 변환(casting) : 부모 타입을 자식 타입으로 변환하는 것. 자식 타입이 부모 타입으로 자동 변환 후, 다시 자식 타입으로 변환할 대 강제 타입 변환 사용
    ex) Parent parent = new Child();
         Child child = (Child) parent;


- 객체 타입 확인(instanceof) : 좌항은 객체가 오고 우항은 타입이 옴, 자항의 객체가 우항의 인스턴스이면/우항타입으로 객체 생성된다면 true, 아니면 false.  주로 매개값의 타입 조사할 때 사용
    ex) boolean result = 좌항(객체) instanceof 우항(타입)

 


 


- 실체 클래스 : 객체를 직접 생성할 수 있는 클래스

- 추상(abstract) 클래스 : 실체 간에 공통되는 특성 추출. 클래스들의 공통된 특성을 추출해서 선언한 클래스
  객체를 직접 생성해서 사용할 수 없음 

  1. 실체 클래스들의 공통된 필드와 메소드의 이름을 통일할 목적
  2. 실체 클래스를 작성할 때 시간을 절약

 

- 추상 클래스 선언 : public abstract class 클래스 {}
     일반 클래스처럼 필드, 생성자, 메소드 선언 가능

 

- 추상 메소드 : 추상 클래스에서만 선언 가능, 선언부만 있고 {} 없는 형태 -> 자식 클래스는 반드시 추상 메소드를 재정의해서 실행 내용 작성해야함

'JAVA' 카테고리의 다른 글

배열 예제_2차원 배열  (0) 2019.06.18
배열 예제_숫자 출력  (0) 2019.06.18
상속_1(상속, override, final)  (0) 2019.06.18
클래스_5(패키지)  (0) 2019.06.18
클래스 예제_계산기  (0) 2019.06.18

+ Recent posts